AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.lession03_login_sd"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="17" />    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.example.lession03_login_sd.LoginActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>



布局文件

  1. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6. <LinearLayout
  7. android:layout_width="match_parent"
  8. android:layout_height="wrap_content">
  9. <TextView
  10. android:id="@+id/view_name"
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:text="@string/login_name"/>
  14. <EditText
  15. android:id="@+id/edit_name"
  16. android:layout_width="0dp"
  17. android:layout_height="wrap_content"
  18. android:layout_weight="1"
  19. android:ems="10"
  20. android:inputType="textPersonName">
  21. <requestFocus/>
  22. </EditText>
  23. </LinearLayout>
  24. <LinearLayout
  25. android:layout_width="match_parent"
  26. android:layout_height="wrap_content">
  27. <TextView
  28. android:id="@+id/view_pass"
  29. android:layout_width="wrap_content"
  30. android:layout_height="wrap_content"
  31. android:text="@string/login_pass"/>
  32. <EditText
  33. android:id="@+id/edit_pass"
  34. android:layout_width="0dp"
  35. android:layout_height="wrap_content"
  36. android:layout_weight="1"
  37. android:ems="10"
  38. android:inputType="textPersonName">
  39. <requestFocus/>
  40. </EditText>
  41. </LinearLayout>
  42. <LinearLayout
  43. android:layout_width="match_parent"
  44. android:layout_height="wrap_content">
  45. <RadioGroup
  46. android:id="@+id/radioGroup1"
  47. android:layout_width="wrap_content"
  48. android:layout_height="wrap_content"
  49. android:orientation="horizontal"
  50. tools:ignore="UselessParent">
  51. <RadioButton
  52. android:id="@+id/radio_rom"
  53. android:layout_width="wrap_content"
  54. android:layout_height="wrap_content"
  55. android:checked="true"
  56. android:text="@string/login_rom"/>
  57. <RadioButton
  58. android:id="@+id/radio_sp"
  59. android:layout_width="wrap_content"
  60. android:layout_height="wrap_content"
  61. android:text="@string/login_sp"/>
  62. <RadioButton
  63. android:id="@+id/radio_sd"
  64. android:layout_width="wrap_content"
  65. android:layout_height="wrap_content"
  66. android:text="@string/login_sd"/>
  67. </RadioGroup>
  68. </LinearLayout>
  69. <LinearLayout
  70. android:layout_width="match_parent"
  71. android:layout_height="wrap_content">
  72. <Button
  73. android:id="@+id/button_login"
  74. android:layout_width="wrap_content"
  75. android:layout_height="wrap_content"
  76. android:text="@string/login_login"/>
  77. <CheckBox
  78. android:id="@+id/check_remember"
  79. android:layout_width="wrap_content"
  80. android:layout_height="wrap_content"
  81. android:layout_marginLeft="100dp"
  82. android:text="@string/login_remember"/>
  83. </LinearLayout>
  84. </LinearLayout>



strings.xml

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="app_name">lession03_login</string>
  4. <stringname="action_settings">Settings</string>
  5. <stringname="hello_world">Helloworld!</string>
  6. <stringname="login_name">用户名</string>
  7. <stringname="login_pass">密码</string>
  8. <stringname="login_login">登陆</string>
  9. <stringname="login_remember">记住密码</string>
  10. <stringname="login_rom">rom存储</string>
  11. <stringname="login_sp">sp存储</string>
  12. <stringname="login_sd">sd存储</string>
  13. </resources>

字节输出流对象:StreamTools.java

  1. packagecom.example.lession02_login.util;
  2. importjava.io.ByteArrayOutputStream;
  3. importjava.io.FileInputStream;
  4. publicclassStreamTools{
  5. publicstaticStringgetValue(FileInputStreamfis)throwsException{
  6. //字节的输出流对象
  7. ByteArrayOutputStreamstream=newByteArrayOutputStream();
  8. byte[]buffer=newbyte[1024];
  9. intlength=-1;
  10. while((length=fis.read(buffer))!=-1){
  11. stream.write(buffer,0,length);
  12. }
  13. stream.flush();
  14. stream.close();
  15. Stringvalue=stream.toString();
  16. returnvalue;
  17. }
  18. }

LoginService.java

  1. package com.example.lession03_login_sd.service;


    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.HashMap;
    import java.util.Map;


    import com.example.lession03_login_sd.util.StreamTools;


    import android.content.Context;
    import android.content.SharedPreferences;
    import android.content.SharedPreferences.Editor;
    import android.os.Environment;


    public class LoginService {


    // 上下文对象
    public Context context;


    // 通过上下文对象传过来
    public LoginService(Context context) {
    super();
    this.context = context;
    }


    /**
    * 采用sharedPreferences方法
    *
    * @param name
    * @param pass
    * @param fileName
    * @return
    */
    public boolean saveToSDCard(String name, String pass, String fileName) {
    // 判断是否有sdcard
    if (Environment.getExternalStorageState().equals(
    Environment.MEDIA_MOUNTED)) {
    // sd写入数据
    // 获取SDCard目录
    File sdCardDir = Environment.getExternalStorageDirectory();
    // 根据目录及创建文件的名称,创建文件
    File saveFile = new File(sdCardDir, fileName);
    // 写数据 输出来
    try {
    FileOutputStream outStream = new FileOutputStream(saveFile);
    String result = name+":"+pass;

    outStream.write(result.getBytes());
    outStream.flush();
    outStream.close();
    } catch (Exception e) {
    e.printStackTrace();
    return false;
    }


    }
    return true;



    }
    // 读取数据
    public Map<String, String> readFileSDcard(String fileName) {
    Map<String, String> map = null;// new HashMap<String, String>();


    try {
    //第一步:获取SDcard目录文件
    File sdcardDir = Environment.getExternalStorageDirectory();
    //第二步:根据sdcard目录及文件名称 创建文件对象
    File file = new File(sdcardDir,fileName);
    //第三步:根据文件对象创建文件的输入流
    FileInputStream fis = new FileInputStream(file);
    //第四步:利用StreamTools工具 获取文件中的内容
    String value = StreamTools.getValue(fis);
    //根据规则拆分
    String values[] = value.split(":");
    //
    if (values.length > 0) {
    map = new HashMap<String, String>();
    map.put("name", values[0]);
    map.put("pass", values[1]);
    }


    } catch (Exception e) {
    e.printStackTrace();
    }
    return map;
    }
    }

LoginActivity.java

  1. package com.example.lession03_login_sd;


    import java.util.Map;


    import com.example.lession03_login_sd.R;
    import com.example.lession03_login_sd.service.LoginService;


    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Context;
    import android.content.SharedPreferences;
    import android.text.TextUtils;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Checkable;
    import android.widget.EditText;
    import android.widget.RadioButton;
    import android.widget.Toast;


    public class LoginActivity extends Activity {


    // 声明获取的用户名和密码
    private EditText edit_name, edit_pass;
    // 声明登陆按对象
    private Button btn_login;
    // 声明复选框组件对象
    private Checkable box_remember;
    // 声明业务对象
    private LoginService loginService;


    // 声明保存方式按钮
    private RadioButton radio_rom, radio_sp, radio_sd;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 设置显示视图
    setContentView(R.layout.activity_login);
    // 实例化业务对像
    loginService = new LoginService(this);


    // 根据id名获取相应组件对象
    edit_name = (EditText) findViewById(R.id.edit_name);
    edit_pass = (EditText) findViewById(R.id.edit_pass);
    btn_login = (Button) findViewById(R.id.button_login);
    box_remember = (Checkable) findViewById(R.id.check_remember);


    radio_rom = (RadioButton) findViewById(R.id.radio_rom);
    radio_sp = (RadioButton) findViewById(R.id.radio_sp);
    radio_sd = (RadioButton) findViewById(R.id.radio_sd);


    // 给按钮注册事件
    btn_login.setOnClickListener(new MyOnclickListener());


    // 采用sdcard数据进行实现数据回显


    // 获取map集合对象
    Map<String, String> map = loginService.readFileSDcard("csdnsdcard.txt");


    if (map != null) {
    // 设置回显数据
    edit_name.setText(map.get("name"));
    edit_pass.setText(map.get("pass"));
    }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.login, menu);
    return true;
    }


    // 内部类 有关点击的处理对象
    class MyOnclickListener implements View.OnClickListener {


    @Override
    public void onClick(View v) {
    int id = v.getId();
    switch (id) {
    case R.id.button_login:
    // 获取用户名密码
    String name = edit_name.getText().toString();
    String pass = edit_pass.getText().toString();


    // 判断用户名密码是否为空
    if (TextUtils.isEmpty(name)) {
    Toast.makeText(LoginActivity.this, "用户名不可 为空",
    Toast.LENGTH_LONG).show();
    return;


    } else if (TextUtils.isEmpty(pass)) {
    Toast.makeText(LoginActivity.this, " 密码不可 为空",
    Toast.LENGTH_LONG).show();
    return;
    } else {
    // 判断记住密码是否被选中
    if (box_remember.isChecked()) {
    // 进行保存
    // 调用业务对象的业务方法
    // 如果rom保存方式被选中
    if (radio_rom.isChecked()) {
    // 如果sp保存方式被选中
    } else if (radio_sp.isChecked()) {


    // 如果sd保存方式被选中
    } else if (radio_sd.isChecked()) {


    boolean flag = loginService.saveToSDCard(name,
    pass, "csdnsdcard.txt");
    if (flag) {
    Toast.makeText(LoginActivity.this, "保存成功",
    Toast.LENGTH_LONG).show();
    } else {
    Toast.makeText(LoginActivity.this, "保存失败",
    Toast.LENGTH_LONG).show();
    }
    }
    } else {
    Toast.makeText(LoginActivity.this, "不保存密码",
    Toast.LENGTH_LONG).show();
    }
    }
    break;


    default:
    break;
    }


    }


    }


    }





删除SD卡文件 http://blog.csdn.net/zhaoyazhi2129/article/details/40583215

更多相关文章

  1. 【Android】基础1
  2. Android获取验证码倒计时
  3. android service
  4. android操作sdcard
  5. Android带进度条文件上传
  6. android 用到的技巧集
  7. android 用到的技巧集
  8. Android获取/清除应用数据
  9. Android之SurfaceView、Camera

随机推荐

  1. 百度地图SDK SDKInitializer.initialize(
  2. Android实时抓取日志,生成文件
  3. android studio编译aidl,找不到类
  4. Android(安卓)UI控件的初识
  5. 2012/3/1 Android导入包错误
  6. Android的NDK开发(2)————利用Android
  7. Android实现拖拽GridView到目标View
  8. Android(安卓)AlertDialog工具类 实现对
  9. android studio 修改包名
  10. Attacking memory problems on Android