SharedPreference存储

android提供的,用来以最简单的方式对数据进行永久性保存的方法
在这里插入图片描述

public class MainActivity extends Activity {
    private String mr = "mr", mrsoft = "mrsoft";    //定义后台用户名与密码
    private String username, password;               //输入的用户名和密码

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       final EditText usernameET = (EditText) findViewById(R.id.username);     //获取用户名编辑框
       final EditText passwordET = (EditText) findViewById(R.id.password);      //获取密码编辑框
       ImageButton login = (ImageButton) findViewById(R.id.login);               //获取登录按钮
        // 获得SharedPreferences,并创建文件名称为"mrsoft"
        final SharedPreferences sp = getSharedPreferences("mrsoft", MODE_PRIVATE);
        final SharedPreferences.Editor editor = sp.edit();    // 获得Editor对象,用于存储用户名与密码信息

        //判断SharedPreferences文件中,用户名、密码是否存在
        if (sp.getString("username", username) != null && sp.getString("password", password) != null) {

            //存在就判断用户名、密码与后台是否相同,相同直接登录
            if (sp.getString("username", username).equals(mr) && sp.getString("password", password).equals(mrsoft)) {
               Intent intent = new Intent(MainActivity.this, MessageActivity.class);  //通过Intent跳转登录后界面
                startActivity(intent);                                                 //启动跳转界面
            }
        } else {
            //实现SharedPreferences文件不存在时,手动登录并存储用户名与密码
            login.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    username = usernameET.getText().toString();            //获得输入的用户名
                    password = passwordET.getText().toString();            //获得输入的密码
                    //如果输入用户名、密码与后台相同时,登录并存储
                    if (username.equals(mr) && password.equals(mrsoft)) { //判断输入的用户名密码是否正确
                        Toast.makeText(MainActivity.this, "用户名、密码正确", Toast.LENGTH_SHORT).show();
                      Intent  intent = new Intent(MainActivity.this, MessageActivity.class);  //通过Intent跳转登录后界面
                        startActivity(intent);                              //启动跳转界面
                        editor.putString("username", username);           //存储用户名
                        editor.putString("password", password);           //存储密码
                        editor.commit();                                    //提交信息
                        Toast.makeText(MainActivity.this, "已保存用户名密码", Toast.LENGTH_SHORT).show();
                    }else {
                        Toast.makeText(MainActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }


    }
}

文件存储

public class MainActivity extends Activity {
    byte[] buffer = null;   //定义保存数据的数组
    private File file;      //定义存储路径

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText etext = (EditText) findViewById(R.id.editText);      //获取用于填写记事本信息的编辑框组件
        ImageButton btn_save = (ImageButton) findViewById(R.id.save);        //获取保存按钮
        ImageButton btn_abolish = (ImageButton) findViewById(R.id.abolish);  //获取取消按钮
        file = new File(Environment.getExternalStorageDirectory(), "Text.text");  //设置存储sd卡根目录

        btn_save.setOnClickListener(new View.OnClickListener() {  //实现外部存储填写的文本信息
            @Override
            public void onClick(View v) {
                FileOutputStream fos = null;              //定义文件输出流
                String text = etext.getText().toString();        //获取文本信息
                try {
                    fos = new FileOutputStream(file);     //获得文件输出流,并指定文件保存的位置
                    fos.write(text.getBytes());           //保存文本信息
                    fos.flush();                           //清除缓存
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if (fos != null) {
                        try {
                            fos.close();                    //关闭文件输出流
                            Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        });

        //实现第二次打开应用时显示上一次所保存的文本信息
        FileInputStream fis = null;                         //定义文件输入流
        try {
            fis = new FileInputStream(file);                 //获得文件输入流
            buffer = new byte[fis.available()];            //保存数据的数组
            fis.read(buffer);                               //从输入流中读取数据
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                try {
                    fis.close();                                      //关闭输入流
                    String data = new String(buffer);                // 获得数组中保存的数据
                    etext.setText(data);                              //保存到编辑框中
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        btn_abolish.setOnClickListener(new View.OnClickListener() {  //实现单击取消按钮,退出应用
            @Override
            public void onClick(View v) {
                finish();                                      //退出应用
            }
        });


    }
}

数据库存储

1、创建数据库
openOrCreateDatabase()
继承SQLiteOpenHelper类

public class DBOpenHelper extends SQLiteOpenHelper {
    //定义创建数据表dict的SQL语句
    final String CREATE_TABLE_SQL =
            "create table dict(_id integer primary " +
                    "key autoincrement , word , detail)";

    public DBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, null, version); //重写构造方法并设置工厂为null
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_SQL); //创建单词信息表
    }
    @Override
    // 重写基类的onUpgrade()方法,以便数据库版本更新
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //提示版本更新并输出旧版本信息与新版本信息
        System.out.println("---版本更新-----" + oldVersion + "--->" + newVersion);
    }
}

2、插入数据

public class AddActivity extends AppCompatActivity {

    private DBOpenHelper dbOpenHelper;  //定义DBOpenHelper,用于与数据库连接
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);

         //创建DBOpenHelper对象,指定名称、版本号并保存在databases目录下
        dbOpenHelper = new DBOpenHelper(AddActivity.this, "dict.db", null, 1);

      final EditText  etWord=(EditText)findViewById(R.id.add_word);           //获取添加单词的编辑框
       final EditText etExplain=(EditText)findViewById(R.id.add_interpret);  //获取添加解释的编辑框
        ImageButton btn_Save= (ImageButton) findViewById(R.id.save_btn);      //获取保存按钮
        ImageButton btn_Cancel= (ImageButton) findViewById(R.id.cancel_btn1); //获取取消按钮

        btn_Save.setOnClickListener(new View.OnClickListener() {  //实现将添加的单词解释保存在数据库中
            @Override
            public void onClick(View v) {
                String word = etWord.getText().toString();  //获取填写的生词
                String explain = etExplain.getText().toString(); //获取填写的解释
                if (word.equals("")||explain.equals("")){  //如果填写的单词或者解释为空时
                    Toast.makeText(AddActivity.this, "填写的单词或解释为空", Toast.LENGTH_SHORT).show();
                }else {
                    // 调用insertData()方法,实现插入生词数据
                    insertData(dbOpenHelper.getReadableDatabase(), word, explain);
                    // 显示提示信息
                    Toast.makeText(AddActivity.this, "添加生词成功!", Toast.LENGTH_LONG).show();
                }

            }
        });
        btn_Cancel.setOnClickListener(new View.OnClickListener() {  //实现返回查询单词界面
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(AddActivity.this,MainActivity.class);  //通过Intent跳转查询单词界面
                startActivity(intent);
            }
        });
    }
    //创建insertData()方法实现插入数据
    private void insertData(SQLiteDatabase readableDatabase, String word, String explain) {
        ContentValues values=new ContentValues();
        values.put("word", word);       //保存单词
        values.put("detail", explain);  //保存解释
        readableDatabase.insert("dict",null , values);//执行插入操作
    }
}

public class MainActivity extends AppCompatActivity {

    private DBOpenHelper dbOpenHelper;   //定义DBOpenHelper

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //创建DBOpenHelper对象,指定名称、版本号并保存在databases目录下
        dbOpenHelper = new DBOpenHelper(MainActivity.this, "dict.db", null, 1);

        final ListView listView = (ListView) findViewById(R.id.result_listView);  //获取显示结果的ListView
        final EditText etSearch = (EditText) findViewById(R.id.search_et);          //获取查询内容的编辑框
        ImageButton btnSearch = (ImageButton) findViewById(R.id.search_btn);     //获取查询按钮
        Button btn_add = (Button) findViewById(R.id.btn_add);                    //获取跳转添加生词界面的按钮
        btn_add.setOnClickListener(new View.OnClickListener() {   //单击添加生词按钮,实现跳转到添加生词的界面
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, AddActivity.class);  //通过Intent跳转添加生词界面
                startActivity(intent);
            }
        });

        btnSearch.setOnClickListener(new View.OnClickListener() {  //单击查询按钮,实现查询词库中的单词
            @Override
            public void onClick(View v) {

                String key = etSearch.getText().toString();  //获取要查询的单词
                //查询单词
                Cursor cursor=dbOpenHelper.getReadableDatabase().query("dict",null
                        ,"word = ?",new String[]{key},null,null,null);


                ArrayList<Map<String, String>> resultList = new ArrayList<Map<String, String>>();   //创建ArrayList对象,用于保存查询出的结果
                while (cursor.moveToNext()) {  // 遍历Cursor结果集
                    Map<String, String> map = new HashMap<>();  // 将结果集中的数据存入HashMap中
                    // 取出查询记录中第2列、第3列的值
                    map.put("word", cursor.getString(1));
                    map.put("interpret", cursor.getString(2));
                    resultList.add(map);                        //将查询出的数据存入ArrayList中
                }

                if (resultList == null || resultList.size() == 0) {  //如果数据库中没有数据
                    // 显示提示信息,没有相关记录
                    Toast.makeText(MainActivity.this, "很遗憾,没有相关记录!", Toast.LENGTH_LONG).show();
                } else {
                    // 否则将查询的结果显示到ListView列表中
                    SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, resultList,
                            R.layout.result_main,
                            new String[]{"word", "interpret"}, new int[]{
                            R.id.result_word, R.id.result_interpret});
                    listView.setAdapter(simpleAdapter);
                }
            }
        });
    }

    @Override
    protected void onDestroy() {  //实现退出应用时,关闭数据库连接
        super.onDestroy();
        if (dbOpenHelper != null) {   //如果数据库不为空时
            dbOpenHelper.close();     //关闭数据库连接
        }
    }

}

Content Provider

在这里插入图片描述

public class MainActivity extends Activity {

    private String columns = ContactsContract.Contacts.DISPLAY_NAME; //希望获得姓名

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView tv = (TextView) findViewById(R.id.result); //获得布局文件中的TextView组件
        tv.setText(getQueryData()); //为TextView设置数据
    }

    private CharSequence getQueryData() { //创建getQueryData()方法,实现获取通讯录信息
        StringBuilder sb = new StringBuilder(); //用于保存字符串
        ContentResolver resolver = getContentResolver(); //获得ContentResolver对象
        //查询记录
        Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        int displayNameIndex = cursor.getColumnIndex(columns); //获得姓名记录的索引值
        //迭代全部记录
        for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
            String displayName = cursor.getString(displayNameIndex);
            sb.append(displayName + "\n");
        }
        cursor.close(); //关闭Cursor
        return sb.toString(); //返回查询结果
    }
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐