|
|
安卓第二天笔记--数据保存
|
|
作者:森林森 来自于:博客园 发布于 2016-3-14 |
|
次浏览
|
|
|
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+"");
}
});
}
} |
|
|
|
次浏览
|
|
|
|
|
|