<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" >
<EditText
android:id="@+id/et_number"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="请输入QQ号码" />
<EditText
android:id="@+id/et_password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textPassword" // 密文
android:hint="请输入QQ密码" />
<CheckBox // 勾选框
android:id="@+id/cb_remerber_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true" // 先默认构选
android:text="记住密码" />
<Button
android:id="@+id/btn_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="40dip"
android:paddingRight="40dp"
android:text="登录" />
</LinearLayout>
package com.itheima27.qqlogin;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import com.itheima27.qqlogin.utils.UtilsOfSharedPreference;
public class MainActivity extends Activity implements OnClickListener {
private static final String TAG = "MainActivity";
private EditText etNumber; // 号码的输入框控件
private EditText etPassword;// 密码的输入框控件
private CheckBox cbRemerberPWD;// 记住密码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//this.getFilesDir(); // /data/data/com.itheima27.qqlogin1/files/itheima27.txt
//this.getCacheDir(); // /data/data/包名/cache/
init();
// 读取信息
/*String text = UtilsOfSharedPreference.getUserInfo(this);
if(!TextUtils.isEmpty(text)) {
// 123##abc
String[] strArray = text.split("##");
etNumber.setText(strArray[0]);
etPassword.setText(strArray[1]);
}*/
Map<String, String> userInfo = UtilsOfSharedPreference.getUserInfo(this);
if(userInfo != null) {
etNumber.setText(userInfo.get("number"));
etPassword.setText(userInfo.get("password"));
}
}
private void init() {
etNumber = (EditText) findViewById(R.id.et_number);
etPassword = (EditText) findViewById(R.id.et_password);
cbRemerberPWD = (CheckBox) findViewById(R.id.cb_remerber_password);
findViewById(R.id.btn_login).setOnClickListener(this);
}
public void onClick(View v) {
// 取出号码和密码
String number = etNumber.getText().toString();
String password = etPassword.getText().toString();
// 校验帐号和密码
if(! TextUtils.isEmpty(number) && !TextUtils.isEmpty(password)) { // 号码和密码不为空
// 如果登录成功, 判断是否记住密码
Toast.makeText(this, "登录成功", 0).show();
if(cbRemerberPWD .isChecked()) { // 需要记住密码
Log.i(TAG, "记住帐号和密码: " + number + " = " + password);
// 存储帐号和密码
if( UtilsOfSharedPreference.saveUserInfo(this, number, password)) {
Toast.makeText(this, "保存成功", 0).show();
} else {
Toast.makeText(this, "保存失败", 0).show();
}
}
} else {
Toast.makeText(this, "请正确输入", 0).show();
}
}
}
、********************************************************************************
utils.java
//this.getFilesDir(); // /data/data/com.itheima27.qqlogin1/files/itheima27.txt
package com.itheima27.qqlogin.utils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import android.content.Context;
public class Utils1 {
/**
* 保存用户信息
* @param number
* @param password
*/
public static boolean saveUserInfo(Context context, String number, String password) {
try {
// /data/data/包名/files/itheima27.txt
File file = new File(context.getFilesDir(), "itheima27.txt");
FileOutputStream fos = new FileOutputStream(file);
String text = number + "##" + password; // 123##abc ## 为了后面分割账号和密码
fos.write(text.getBytes()); // 写入
fos.flush();
fos.close();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* 获取用户信息
* @return
*/
public static String getUserInfo(Context context) {
try {
File file = new File(context.getFilesDir(), "itheima27.txt");
// 字节流
FileInputStream fis = new FileInputStream(file);
// 转换流
InputStreamReader isr = new InputStreamReader(fis);
// 字符流
BufferedReader br = new BufferedReader(isr);
String result = br.readLine();
br.close();
isr.close();
fis.close();
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
//this.getCacheDir(); // /data/data/包名/cache/
路径相关:
// 存放一些应用程序配置的信息.
this.getFilesDir(); // /data/data/当前应用程序的包名/files
// 存放应用程序缓存文件(不能影响应用程序运行的数据.)
this.getCacheDir(); // /data/data/包名/cache/
存储卡的路径:
Environment.getExternalStorageDirectory(); /mnt/sdcard/