您的位置:首页 > 其它

安卓第二天笔记--数据保存

2016-02-21 22:16 429 查看


安卓第二天笔记-数据保存


安卓第二天笔记--数据保存

1.保存数据私有文件



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<ImageView
android:background="#0090CA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/qq"/>

<!--号码  -->
<EditText
android:id="@+id/et_qqNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="请输入qq号码"/>
<!--密码  -->
<EditText
android:id="@+id/et_qqPwd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="请输入qq密码"/>
<!--记住密码复选框  -->
<CheckBox
android:id="@+id/cb_remember"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="记住密码"/>
<!--登录按键  -->
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#09A3DC"
android:textSize="20sp"
android:textColor="#fff"
android:text="登录"/>
</LinearLayout>


Activity

/**
* QQ 登录 保存密码到私有文件
* 步骤
* 1.获取输入的用户名与密码
*  2.判断是否 为空,为空就给用户提示Toast
*  3.保存用户名与密码到文件
*  4.数据回显
*
* @author 刘楠
*
*         2016-2-18下午12:39:54
*/
public class MainActivity extends Activity implements OnClickListener {

private static final String TAG = "MainActivity";
/*
* QQ号码
*/
private EditText et_qqNumber;
/*
* QQ密码
*/
private EditText et_qqPwd;
/*
* 记住密码,复选框
*/
private CheckBox cb_remember;
/*
* 登录按键
*/
private Button btn_login;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
* 初始化
*/
et_qqNumber = (EditText) findViewById(R.id.et_qqNumber);
et_qqPwd = (EditText) findViewById(R.id.et_qqPwd);
cb_remember = (CheckBox) findViewById(R.id.cb_remember);

btn_login = (Button) findViewById(R.id.btn_login);
/*
* 为登录按键设置单击事件
*/
btn_login.setOnClickListener(this);

/*
* 回显示数据
*/
Map<String, String> map=QQLoginUtils.getUser(this);

if(map!=null){
et_qqNumber.setText(map.get("username"));
et_qqPwd.setText(map.get("password"));
String isChecked = map.get("isChecked");
if("true".equals(isChecked)){
cb_remember.setChecked(true);

}else{
cb_remember.setChecked(false);
}
}

}

/**
* 单击事件,监听器
*/
@Override
public void onClick(View v) {

// 判断ID
switch (v.getId()) {
case R.id.btn_login:
// 执行相应的方法
qqLogin();
break;

default:
break;
}

}

/**
* 登录方法
*/

public void qqLogin() {
/*
* 获取用户名与密码
*/
String qq = et_qqNumber.getText().toString().trim();
String pwd = et_qqPwd.getText().toString().trim();
// 判断是否为空
if (TextUtils.isEmpty(qq) || TextUtils.isEmpty(pwd)) {
Toast.makeText(this, "亲,qq号码 与密码不能为空!", Toast.LENGTH_SHORT).show();
return;
}
/*
* 判断 是否要保存
*/
if (cb_remember.isChecked()) {
Log.i(TAG, "保存用户名与密码");
// 要保存
boolean flag = QQLoginUtils.saveUser(this, qq, pwd,cb_remember.isChecked());
// 判断 是否保存成功
if (flag) {
Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();

}
} else {
//不要保存
Log.i(TAG, "不保存用户名与密码");
boolean flag = QQLoginUtils.saveUser(this, "", "",cb_remember.isChecked());
// 判断 是否保存成功
if (flag) {
Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();

}
}

}

}


Utils

/**
* 保存用户名密码工具类

* @author 刘楠
*
* 2016-2-18下午12:50:55
*/
public class QQLoginUtils {

/**
*
* @param context 上下文
* @param name 用户名
* @param password 密码
* @param isChecked  记录密码状态
* @return  是否保存成功
*/
public static boolean saveUser(Context context, String name, String password, boolean isChecked) {

OutputStream out=null;
try {
File file = new File(context.getFilesDir(), "user.txt");

out = new FileOutputStream(file);

String data = name +"#"+password+"#"+isChecked;
out.write(data.getBytes());

return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}

public static Map<String, String> getUser(Context context) {
File file = new File(context.getFilesDir(), "user.txt");
/*
* 判断文件是否存在
*/
if(!file.exists()){
return null;
}
/*
* 获取文件
*/
Map<String,String> map= new HashMap<String, String>();
BufferedReader br=null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String data = br.readLine();
String[] split = data.split("#");

map.put("username", split[0]);
map.put("password", split[1]);
map.put("isChecked", split[2]);
//返回结果
br.close();
return map;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//
return null;
}

}




2.保存数据要SD卡

更改工具类

/**
* 保存用户名密码工具类

* @author 刘楠
*
* 2016-2-18下午12:50:55
*/
public class QQLoginUtils {

/**
*
* @param context 上下文
* @param name 用户名
* @param password 密码
* @param isChecked
* @return  是否保存成功
*/
public static boolean saveUser(Context context, String name, String password, boolean isChecked) {
/*
* 判断SD卡是否正常
*/
String state = Environment.getExternalStorageState();
if(!Environment.MEDIA_MOUNTED.equals(state)){
Toast.makeText(context, "SD卡没有插入", Toast.LENGTH_SHORT).show();
return false;
}
OutputStream out=null;
try {
File file = new File(Environment.getExternalStorageDirectory(), "user.txt");

out = new FileOutputStream(file);

String data = name +"#"+password+"#"+isChecked;
out.write(data.getBytes());

return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}

public static Map<String, String> getUser(Context context) {
/*
* 判断SD卡是否正常
*/
String state = Environment.getExternalStorageState();
if(!Environment.MEDIA_MOUNTED.equals(state)){
Toast.makeText(context, "SD卡没有插入", Toast.LENGTH_SHORT).show();
return null;
}

File file = new File(Environment.getExternalStorageDirectory(), "user.txt");
/*
* 判断文件是否存在
*/
if(!file.exists()){
return null;
}
/*
* 获取文件
*/
Map<String,String> map= new HashMap<String, String>();
BufferedReader br=null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String data = br.readLine();
String[] split = data.split("#");

map.put("username", split[0]);
map.put("password", split[1]);
map.put("isChecked", split[2]);
//返回结果
br.close();
return map;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//
return null;
}

}


添加写入SD卡的权限

在Manifest.xml中

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>


3.保存数据到SharedPreferences

布局文件不变

/**
* QQ 登录 保存密码到SharedPreferences
* 步骤 1.获取输入的用户名与密码
*  2.判断是否 为空,为空就给用户提示Toast
*  3.保存用户名与密码到文件
*
* @author 刘楠
*
*         2016-2-18下午12:39:54
*/
public class MainActivity extends Activity implements OnClickListener {

private static final String TAG = "MainActivity";
/*
* QQ号码
*/
private EditText et_qqNumber;
/*
* QQ密码
*/
private EditText et_qqPwd;
/*
* 记住密码,复选框
*/
private CheckBox cb_remember;
/*
* 登录按键
*/
private Button btn_login;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
* 初始化
*/
et_qqNumber = (EditText) findViewById(R.id.et_qqNumber);
et_qqPwd = (EditText) findViewById(R.id.et_qqPwd);
cb_remember = (CheckBox) findViewById(R.id.cb_remember);

btn_login = (Button) findViewById(R.id.btn_login);
/*
* 为登录按键设置单击事件
*/
btn_login.setOnClickListener(this);

/*
* 回显示数据
*/
Map<String, Object> map=QQLoginUtils.getUser(this);

if(map!=null){
et_qqNumber.setText(map.get("username").toString());
et_qqPwd.setText(map.get("password").toString());
boolean isChecked = (Boolean) map.get("isChecked");
cb_remember.setChecked(isChecked);

}

}

/**
* 单击事件,监听器
*/
@Override
public void onClick(View v) {

// 判断ID
switch (v.getId()) {
case R.id.btn_login:
// 执行相应的方法
qqLogin();
break;
}

}

/**
* 登录方法
*/

public void qqLogin() {
/*
* 获取用户名与密码
*/
String qq = et_qqNumber.getText().toString().trim();
String pwd = et_qqPwd.getText().toString().trim();
// 判断是否为空
if (TextUtils.isEmpty(qq) || TextUtils.isEmpty(pwd)) {
Toast.makeText(this, "亲,qq号码 与密码不能为空!", Toast.LENGTH_SHORT).show();
return;
}
/*
* 判断 是否要保存
*/
if (cb_remember.isChecked()) {
Log.i(TAG, "保存用户名与密码");
// 要保存
boolean flag = QQLoginUtils.saveUser(this, qq, pwd,cb_remember.isChecked());
// 判断 是否保存成功
if (flag) {
Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();

}
} else {
//不要保存
Log.i(TAG, "不保存用户名与密码");
boolean flag = QQLoginUtils.saveUser(this, null, null,cb_remember.isChecked());
// 判断 是否保存成功
if (flag) {
Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();
}

}
}

}


工具类

/**
* 保存用户名密码工具类

* @author 刘楠
*
* 2016-2-18下午12:50:55
*/
public class QQLoginUtils {

/**
*
* @param context 上下文
* @param name 用户名
* @param password 密码
* @param isChecked
* @return  是否保存成功
*/
public static boolean saveUser(Context context, String name, String password, boolean isChecked) {

SharedPreferences preferences = context.getSharedPreferences("config", Context.MODE_PRIVATE);

Editor editor = preferences.edit();
editor.putString("username", name);
editor.putString("password", password);
editor.putBoolean("isChecked", isChecked);

editor.commit();
return true;

}

/**
* 取出数据
* @param context
* @return
*/
public static Map<String, Object> getUser(Context context) {
Map<String, Object> map= new HashMap<String, Object>();
SharedPreferences preferences = context.getSharedPreferences("config", Context.MODE_PRIVATE);
String username = preferences.getString("username", "");
String password = preferences.getString("password", "");
boolean isChecked = preferences.getBoolean("isChecked", false);

map.put("username", username);
map.put("password", password);
map.put("isChecked", isChecked);

return map;

}

}


4.保存数据到XML文件



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="学生信息管理系统"
android:textColor="#ff0000"
android:textSize="28sp" />
<!-- 学生姓名 -->

<EditText
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入学生姓名" />

<!-- 性别 -->

<RadioGroup
android:id="@+id/rg_gender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<RadioButton
android:id="@+id/rb_man"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:checked="true"
android:text="男" />

<RadioButton
android:id="@+id/rb_felman"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="女" />
</RadioGroup>

<Button
android:id="@+id/btn_save"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#09A3DC"
android:text="保存"
android:textColor="#fff" />

<Button
android:id="@+id/btn_query"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="#09A3DC"
android:text="查询"
android:textColor="#fff" />

<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

</LinearLayout>


/**
* 学生信息管理系统
保存学生信息到XML文件 serializer

步骤:
1.获取用户输入的用户名
2.判断输入是否为空, 为空给用户提示,Toast
3.使用 serializer,生成XML保存
查询
1.获取用户输入的姓名
2.查找文件是否存在
3.存在就解析pull解析,并显示,不存在就提示

* @author 刘楠
*
* 2016-2-18下午7:50:09
*/
public class MainActivity extends Activity  implements OnClickListener{

/*
* 学生姓名
*/
private EditText et_name;
/*
* 学生性别
*/
private RadioGroup rg_gender;

/*
* 保存
*/
private Button btn_save;
/*
* 查询
*/
private Button btn_query;

/*
* 显示查询结果
*/
private TextView tv_result;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_name = (EditText) findViewById(R.id.et_name);
rg_gender = (RadioGroup) findViewById(R.id.rg_gender);

btn_save = (Button) findViewById(R.id.btn_save);

btn_query = (Button) findViewById(R.id.btn_query);

tv_result = (TextView) findViewById(R.id.tv_result);

/*
* 设置单击事件
*/
btn_save.setOnClickListener(this);
btn_query.setOnClickListener(this);

}

/**
* 单击事件监听器
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_save:
//保存
save();
break;
case R.id.btn_query:
//查询
query();
break;
}

}
/**
* 查询
*/
private void query() {
//获取用户输入的用户名

String name = et_name.getText().toString().trim();
//判断
if(TextUtils.isEmpty(name)){
Toast.makeText(this, "学生姓名不能为空", Toast.LENGTH_SHORT).show();
return ;
}

Map<String, String> map =    StudentUtils.getStudent(this,name);
//tv_result;
if(map!=null){

String data="姓名:"+map.get("name")+",性别:"+map.get("gender");
tv_result.setText(data);
}
}

/**
* 保存
*/
private void save() {
//获取用户输入的用户名

String name = et_name.getText().toString().trim();
//判断
if(TextUtils.isEmpty(name)){
Toast.makeText(this, "学生姓名不能为空", Toast.LENGTH_SHORT).show();
return ;
}

//判断性别
String gender="男";
switch (rg_gender.getCheckedRadioButtonId()) {
case R.id.rb_man:
RadioButton rb_man = (RadioButton) findViewById(R.id.rb_man);
gender=rb_man.getText().toString().trim();
break;
case R.id.rb_felman:
RadioButton rb_felman = (RadioButton) findViewById(R.id.rb_felman);
gender=rb_felman.getText().toString().trim();
break;
}
/*
* 开始保存文件 serializer
*/

boolean flag =StudentUtils.save(this,name,gender);

if(flag){
Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();
}

}

}


工具类

/**
* 学生保存,查询的工具类
*
* @author 刘楠
*
*         2016-2-18下午8:09:29
*/
public class StudentUtils {

public static boolean save(Context context, String name, String gender) {

File file = new File(context.getFilesDir(), name + ".xml");
try {
OutputStream out = new FileOutputStream(file);
// 获取XML生成工具serializer
XmlSerializer serializer = Xml.newSerializer();
// 调置输出编码
serializer.setOutput(out, "UTF-8");
// 设置XML头
serializer.startDocument("UTF-8", true);

serializer.startTag(null, "student");

serializer.startTag(null, "name");
serializer.text(name);
serializer.endTag(null, "name");

serializer.startTag(null, "gender");
serializer.text(gender);
serializer.endTag(null, "gender");

serializer.endTag(null, "student");

serializer.endDocument();

// 关闭流
out.close();
return true;
} catch (Exception e) {
e.printStackTrace();
}

return false;
}

/*
* 查询
*/
public static Map<String, String> getStudent(Context context, String name) {

File file = new File(context.getFilesDir(), name + ".xml");
if (!file.exists()) {
Toast.makeText(context, "学生信息不存在", Toast.LENGTH_SHORT).show();
return null;
}
Map<String, String> map = new HashMap<String, String>();
try {
InputStream in = new FileInputStream(file);
// 使用pull解析
XmlPullParser pullParser = Xml.newPullParser();
// 读取编码
pullParser.setInput(in, "UTF-8");
// 事件
int eventType = pullParser.getEventType();

while (eventType != XmlPullParser.END_DOCUMENT) {
// 判断是不是开始标签
if (eventType == XmlPullParser.START_TAG) {

if ("name".equals(pullParser.getName())) {

String stuName = pullParser.nextText();
map.put("name", stuName);

} else if ("gender".equals(pullParser.getName())) {
String gender = pullParser.nextText();
map.put("gender", gender);
}
}
// 向下移动指针
eventType = pullParser.next();
}
in.close();
return map;
} catch (Exception e) {
e.printStackTrace();
}

return null;
}

}


5.保存各种权限的文件



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<ImageView
android:background="#0090CA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/qq"/>

<!--号码  -->
<EditText
android:id="@+id/et_qqNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="请输入qq号码"/>
<!--密码  -->
<EditText
android:id="@+id/et_qqPwd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="请输入qq密码"/>
<!--记住密码复选框  -->
<!--  <CheckBox
android:id="@+id/cb_remember"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="记住密码"/> -->

<RadioGroup
android:id="@+id/rg_premission"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<RadioButton
android:id="@+id/rb_private"
android:checked="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="私有"/>

<RadioButton
android:id="@+id/rb_readable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="可读"/>
<RadioButton
android:id="@+id/rb_writable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="可写"/>
<RadioButton
android:id="@+id/rb_public"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="公有"/>

</RadioGroup>
<!--登录按键  -->
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#09A3DC"
android:textSize="20sp"
android:textColor="#fff"
android:text="登录"/>
</LinearLayout>


/**
* QQ 登录 保存密码到私有文件
* 步骤 1.获取输入的用户名与密码
* 2.判断是否 为空,为空就给用户提示Toast
*  3.保存用户名与密码到文件
*
* @author 刘楠
*
*         2016-2-18下午12:39:54
*/
public class MainActivity extends Activity implements OnClickListener {

private static final String TAG = "MainActivity";
/*
* QQ号码
*/
private EditText et_qqNumber;
/*
* QQ密码
*/
private EditText et_qqPwd;
/*
* 记住密码,复选框
*/
//private CheckBox cb_remember;
/*
* 登录按键
*/
private Button btn_login;

private RadioGroup rg_premission;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
* 初始化
*/
et_qqNumber = (EditText) findViewById(R.id.et_qqNumber);
et_qqPwd = (EditText) findViewById(R.id.et_qqPwd);
//    cb_remember = (CheckBox) findViewById(R.id.cb_remember);

btn_login = (Button) findViewById(R.id.btn_login);

rg_premission = (RadioGroup) findViewById(R.id.rg_premission);

/*
* 为登录按键设置单击事件
*/
btn_login.setOnClickListener(this);

/*
* 回显示数据
*/
Map<String, String> map=QQLoginUtils.getUser(this);

if(map!=null){
et_qqNumber.setText(map.get("username"));
et_qqPwd.setText(map.get("password"));
}

}

/**
* 单击事件,监听器
*/
@Override
public void onClick(View v) {

// 判断ID
switch (v.getId()) {
case R.id.btn_login:
// 执行相应的方法
qqLogin();
break;

default:
break;
}

}

/**
* 登录方法
*/

public void qqLogin() {
/*
* 获取用户名与密码
*/
String qq = et_qqNumber.getText().toString().trim();
String pwd = et_qqPwd.getText().toString().trim();
// 判断是否为空
if (TextUtils.isEmpty(qq) || TextUtils.isEmpty(pwd)) {
Toast.makeText(this, "亲,qq号码 与密码不能为空!", Toast.LENGTH_SHORT).show();
return;
}
/*
* 判断 要保存的类型
*/
int radioButtonId = rg_premission.getCheckedRadioButtonId();
boolean flag = false ;
switch (radioButtonId) {

case R.id.rb_private:
//私有
flag= QQLoginUtils.saveUser(this, qq, pwd,1);
break;

case R.id.rb_readable:
//只读
flag= QQLoginUtils.saveUser(this, qq, pwd,2);
break;

case R.id.rb_writable:
//可写
flag= QQLoginUtils.saveUser(this, qq, pwd,3);
break;

case R.id.rb_public:
//可读可写
flag= QQLoginUtils.saveUser(this, qq, pwd,4);
break;

}

// 要保存

// 判断 是否保存成功
if (flag) {
Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();

}

}

}


工具类

/**
* 保存用户名密码工具类

* @author 刘楠
*
* 2016-2-18下午12:50:55
*/
public class QQLoginUtils {

/**
*
* @param context 上下文
* @param name 用户名
* @param password 密码
* @param mode 模式 1,私有,2,只读,3,只可写,4,可读可写
* @return  是否保存成功
*/
public static boolean saveUser(Context context, String name, String password,int mode) {

OutputStream out=null;
try {

switch (mode) {
case 1:
out =context.openFileOutput("private.txt",context.MODE_PRIVATE);
break;
case 2:
out =context.openFileOutput("readable.txt", context.MODE_WORLD_READABLE);
break;
case 3:
out =context.openFileOutput("writable.txt", context.MODE_WORLD_WRITEABLE);
break;
case 4:
out =context.openFileOutput("public.txt", context.MODE_WORLD_READABLE+context.MODE_WORLD_WRITEABLE);
break;

}

String data = name +"#"+password;
out.write(data.getBytes());

return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}

public static Map<String, String> getUser(Context context) {
File file = new File(context.getFilesDir(), "user.txt");
/*
* 判断文件是否存在
*/
if(!file.exists()){
return null;
}
/*
* 获取文件
*/
Map<String,String> map= new HashMap<String, String>();
BufferedReader br=null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String data = br.readLine();
String[] split = data.split("#");

map.put("username", split[0]);
map.put("password", split[1]);
//返回结果
br.close();
return map;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//
return null;
}

}


6.读取各种权限的文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity" >

<Button
android:id="@+id/btn_readPrivate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读取私有文件private" />
<Button
android:id="@+id/btn_writePrivate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="写入私有文件private" />
<Button
android:id="@+id/btn_readReadable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读取可读文件readable" />
<Button
android:id="@+id/btn_writeReadable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="写入可读文件readable" />
<Button
android:id="@+id/btn_readWritable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读取可写文件Writable" />
<Button
android:id="@+id/btn_writeWritable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="写入可写文件Writable" />
<Button
android:id="@+id/btn_readPublic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读取公有文件Public" />
<Button
android:id="@+id/btn_writePublic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="写入公有文件Public" />

</LinearLayout>


package com.itheiam.readfile;

import java.io.BufferedReader;
import java.io.File;

import java.io.FileOutputStream;
import java.io.FileReader;

import java.io.OutputStream;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

/**
* 读取和写入各种权限下的文件 07号项目 的文件
*
* @author 刘楠
*
*         2016-2-18下午6:33:00
*/
public class MainActivity extends Activity implements OnClickListener {
/*
* 读取私有文件按键
*/
private Button btn_readPrivate;
/*
* 写入私有文件按键
*/
private Button btn_writePrivate;
/*
* 读取可读文件
*/
private Button btn_readReadable;
/*
* 写入可读文件
*/
private Button btn_writeReadable;
/*
* 读取可写文件
*/
private Button btn_readWritable;
/*
* 写入可写文件
*/
private Button btn_writeWritable;
/*
* 读取公有文件
*/
private Button btn_readPublic;
/*
* 写入公有文件
*/
private Button btn_writePublic;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//私有文件
btn_readPrivate = (Button) findViewById(R.id.btn_readPrivate);
btn_writePrivate = (Button) findViewById(R.id.btn_writePrivate);

//可读文件
btn_readReadable = (Button) findViewById(R.id.btn_readReadable);
btn_writeReadable = (Button) findViewById(R.id.btn_writeReadable);

//可写文件
btn_readWritable = (Button) findViewById(R.id.btn_readWritable);
btn_writeWritable = (Button) findViewById(R.id.btn_writeWritable);
//公有文件
btn_readPublic = (Button) findViewById(R.id.btn_readPublic);
btn_writePublic = (Button) findViewById(R.id.btn_writePublic);
/*
* 设置单击事件
*/
//私有
btn_readPrivate.setOnClickListener(this);
btn_writePrivate.setOnClickListener(this);
//可读
btn_readReadable.setOnClickListener(this);
btn_writeReadable.setOnClickListener(this);
//可写
btn_readWritable.setOnClickListener(this);
btn_writeWritable.setOnClickListener(this);
//公有
btn_readPublic.setOnClickListener(this);
btn_writePublic.setOnClickListener(this);
}

/**
* 单击事件监听器
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_readPrivate:
readPrivate();
break;
case R.id.btn_writePrivate:
writePrivate();
break;
case R.id.btn_readReadable:
readReadable();
break;
case R.id.btn_writeReadable:
writeReadable();
break;
case R.id.btn_readWritable:
readWritable();
break;
case R.id.btn_writeWritable:
writeWritable();
break;
case R.id.btn_readPublic:
readPublic();
break;
case R.id.btn_writePublic:
writePublic();
break;

}

}

/**
* 写入公有文件
*/
private void writePublic() {
// 获取公有文件
File file = new File(
"/data/data/com.itheima.qqlogin/files/public.txt");
if (!file.exists()) {
Toast.makeText(this, "private文件不存在", Toast.LENGTH_SHORT).show();
return;
}
// 开始写入
try {
OutputStream out = new FileOutputStream(file);

out.write("我写入了".getBytes());

out.close();
Toast.makeText(this, "写入public成功", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "写入public失败", Toast.LENGTH_SHORT).show();
}
}
/**
* 读取公有文件
*/
private void readPublic() {
// 获取公有文件
File file = new File(
"/data/data/com.itheima.qqlogin/files/public.txt");
if (!file.exists()) {
Toast.makeText(this, "public文件不存在", Toast.LENGTH_SHORT).show();
return;
}
// 开始读取
try {
BufferedReader br = new BufferedReader(new FileReader(file));

String data = br.readLine();

Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
br.close();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "读取public文件失败", Toast.LENGTH_SHORT).show();
}
}

/**
* 写入可写文件
*/
private void writeWritable() {
// 获取可写文件
File file = new File(
"/data/data/com.itheima.qqlogin/files/writable.txt");
if (!file.exists()) {
Toast.makeText(this, "writable文件不存在", Toast.LENGTH_SHORT).show();
return;
}
// 开始写入
try {
OutputStream out = new FileOutputStream(file);

out.write("我写入了".getBytes());

out.close();
Toast.makeText(this, "写入writable成功", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "写入writable失败", Toast.LENGTH_SHORT).show();
}
}
/**
* 读取可写文件
*/
private void readWritable() {
// 获取可写文件
File file = new File(
"/data/data/com.itheima.qqlogin/files/writable.txt");
if (!file.exists()) {
Toast.makeText(this, "writable文件不存在", Toast.LENGTH_SHORT).show();
return;
}
// 开始读取
try {
BufferedReader br = new BufferedReader(new FileReader(file));

String data = br.readLine();

Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
br.close();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "读取writable文件失败", Toast.LENGTH_SHORT).show();
}
}

/**
* 写入可读文件
*/
private void writeReadable() {
// 获取可读文件
File file = new File(
"/data/data/com.itheima.qqlogin/files/readable.txt");
if (!file.exists()) {
Toast.makeText(this, "private文件不存在", Toast.LENGTH_SHORT).show();
return;
}
// 开始写入
try {
OutputStream out = new FileOutputStream(file);

out.write("我写入了".getBytes());

out.close();
Toast.makeText(this, "写入readable成功", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "写入readable失败", Toast.LENGTH_SHORT).show();
}
}

/**
* 读取可读文件
*/
private void readReadable() {
// 获取可读文件
File file = new File(
"/data/data/com.itheima.qqlogin/files/readable.txt");
if (!file.exists()) {
Toast.makeText(this, "private文件不存在", Toast.LENGTH_SHORT).show();
return;
}
// 开始读取
try {
BufferedReader br = new BufferedReader(new FileReader(file));

String data = br.readLine();

Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
br.close();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "读取readable文件失败", Toast.LENGTH_SHORT).show();
}
}

/*
* 读取私有文件
*/
private void readPrivate() {
// 获取私有文件
File file = new File("/data/data/com.itheima.qqlogin/files/private.txt");
if (!file.exists()) {
Toast.makeText(this, "private文件不存在", Toast.LENGTH_SHORT).show();
return;
}
// 开始读取
try {
BufferedReader br = new BufferedReader(new FileReader(file));

String data = br.readLine();

Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
br.close();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "读取private文件失败", Toast.LENGTH_SHORT).show();
}

}

/*
* 写入私有文件
*/
private void writePrivate() {
// 获取私有文件
File file = new File("/data/data/com.itheima.qqlogin/files/private.txt");
if (!file.exists()) {
Toast.makeText(this, "private文件不存在", Toast.LENGTH_SHORT).show();
return;
}
// 开始写入
try {
OutputStream out = new FileOutputStream(file);

out.write("我写入了".getBytes());

out.close();
Toast.makeText(this, "写入private成功", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "写入private失败", Toast.LENGTH_SHORT).show();
}
}

}


7.获取存储空间

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity" >

<Button
android:onClick="getRamSpace"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取内部存储空间"/>

<Button
android:onClick="getSdSpace"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取SD卡存储空间"/>

<TextView
android:id="@+id/tv_ram"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv_sd"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

</LinearLayout>


public class MainActivity extends Activity {

/*
* 显示内部空间
*/
private TextView tv_sd;
/*
* 显示SD卡空间
*/
private TextView tv_ram;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_ram = (TextView) findViewById(R.id.tv_ram);

tv_sd = (TextView) findViewById(R.id.tv_sd);
}

/**
*  获取内部存储空间
* @param v
*/
public void getRamSpace(View v){
//总空间
long totalSpace = Environment.getRootDirectory().getTotalSpace();
//可用空间
long freeSpace = Environment.getRootDirectory().getFreeSpace();

//已经使用的空间
long  useSpace = totalSpace-freeSpace;
//总空间大小
String totalSize = Formatter.formatFileSize(this, totalSpace);
//可用
String freeSize = Formatter.formatFileSize(this, freeSpace);
//已经使用
String useSize = Formatter.formatFileSize(this, useSpace);

String data="内部存储总空间:"+totalSize+", 已经使用:"+useSize+",可用空间:"+freeSize;

tv_ram.setText(data);

}
/**
*  获取SD存储空间
* @param v
*/
public void getSdSpace(View v){
//总空间
long totalSpace = Environment.getExternalStorageDirectory().getTotalSpace();
//可用空间
long freeSpace = Environment.getExternalStorageDirectory().getFreeSpace();

//已经使用的空间
long  useSpace = totalSpace-freeSpace;
//总空间大小
String totalSize = Formatter.formatFileSize(this, totalSpace);
//可用
String freeSize = Formatter.formatFileSize(this, freeSpace);
//已经使用
String useSize = Formatter.formatFileSize(this, useSpace);

String data="SD卡总空间:"+totalSize+", 已经使用:"+useSize+",可用空间:"+freeSize;

tv_sd.setText(data);

}

}


8.设置中心



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="声音"
android:textColor="#fff" />

<CheckBox
android:id="@+id/cb_sound"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true" />
</RelativeLayout>

<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="#55ffffff"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"/>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="显示"
android:textColor="#fff" />

<CheckBox
android:id="@+id/cb_display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="#55ffffff"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"/>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="应用"
android:textColor="#fff" />

<CheckBox
android:id="@+id/cb_app"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="#55ffffff"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"/>

<SeekBar
android:id="@+id/sb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="30"
/>

<TextView
android:gravity="center_horizontal"
android:id="@+id/tv_sbProgress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:textColor="#fff" />
</LinearLayout>


package com.itheima.settingcenter;

import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

/**
* 使用SharedPreferences存储选项
* 1.初始化
* 2.设置监听器
* 3.保存
* 4.取出

* @author 刘楠
*
* 2016-2-18下午8:44:14
*/
public class MainActivity extends Activity {
/*
* 声音复选框保存
*/
private CheckBox cb_sound;
/*
* 显示复选框
*/
private CheckBox cb_display;
/*
* app复选框保存
*/
private CheckBox cb_app;
/*
* 进度
*/
private SeekBar sb;
/*
* 声音复选框保存
*/
private SharedPreferences soundPreferences;
/*
* 显示复选框
*/
private SharedPreferences displayPreferences;
/*
* app复选框保存
*/
private SharedPreferences appPreferences;
/*
* seekbar的进度保存
*/
private SharedPreferences spPreferences;
/*
*  显示seekbar进度
*/
private TextView tv_sbProgress;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

cb_sound = (CheckBox) findViewById(R.id.cb_sound);
cb_display = (CheckBox) findViewById(R.id.cb_display);
cb_app = (CheckBox) findViewById(R.id.cb_app);

sb = (SeekBar) findViewById(R.id.sb);

tv_sbProgress = (TextView) findViewById(R.id.tv_sbProgress);

soundPreferences = getSharedPreferences("sound", MODE_PRIVATE);

boolean soundChecked = soundPreferences.getBoolean("isChecked", false);

cb_sound.setChecked(soundChecked);
displayPreferences = getSharedPreferences("display", MODE_PRIVATE);

boolean displayChecked = displayPreferences.getBoolean("isChecked", false);
cb_display.setChecked(displayChecked);

appPreferences = getSharedPreferences("app", MODE_PRIVATE);

boolean appChecked = appPreferences.getBoolean("isChecked", false);
cb_app.setChecked(appChecked);

spPreferences= getSharedPreferences("seekBar", MODE_PRIVATE);

int progress = spPreferences.getInt("progress", 0);

sb.setProgress(progress);

/*
* 设置监听器
*/
cb_sound.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Editor editor = soundPreferences.edit();
editor.putBoolean("isChecked", isChecked);
editor.commit();

}
} );
/*
* 设置监听器
*/
cb_display.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

Editor editor = displayPreferences.edit();
editor.putBoolean("isChecked", isChecked);
editor.commit();
}
} );
/*
* 设置监听器
*/
cb_app.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

Editor editor = appPreferences.edit();
editor.putBoolean("isChecked", isChecked);
editor.commit();
}

} );

/*
* seekbar监听器
*/
sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int progress2 = seekBar.getProgress();

Editor editor = spPreferences.edit();
editor.putInt("progress", progress2);
editor.commit();
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

tv_sbProgress.setText(seekBar.getProgress()+"");
}

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
tv_sbProgress.setText(progress+"");
}
});
}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: