您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
安卓第二天笔记--数据保存
 
作者:森林森 来自于:博客园 发布于 2016-3-14
  2035  次浏览      16
 

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+"");
}
});
}


}

   
2035 次浏览       16
 
相关文章

手机软件测试用例设计实践
手机客户端UI测试分析
iPhone消息推送机制实现与探讨
Android手机开发(一)
 
相关文档

Android_UI官方设计教程
手机开发平台介绍
android拍照及上传功能
Android讲义智能手机开发
相关课程

Android高级移动应用程序
Android系统开发
Android应用开发
手机软件测试
最新课程计划
信息架构建模(基于UML+EA)3-21[北京]
软件架构设计师 3-21[北京]
图数据库与知识图谱 3-25[北京]
业务架构设计 4-11[北京]
SysML和EA系统设计与建模 4-22[北京]
DoDAF规范、模型与实例 5-23[北京]

android人机界面指南
Android手机开发(一)
Android手机开发(二)
Android手机开发(三)
Android手机开发(四)
iPhone消息推送机制实现探讨
手机软件测试用例设计实践
手机客户端UI测试分析
手机软件自动化测试研究报告
更多...   

Android高级移动应用程序
Android应用开发
Android系统开发
手机软件测试
嵌入式软件测试
Android软、硬、云整合

领先IT公司 android开发平台最佳实践
北京 Android开发技术进阶
某新能源领域企业 Android开发技术
某航天公司 Android、IOS应用软件开发
阿尔卡特 Linux内核驱动
艾默生 嵌入式软件架构设计
西门子 嵌入式架构设计
更多...