SharedPreferences存储数据

Android的存储方式

使用SharedPreferences存储数据
文件存储数据
SQLite数据库存储数据
使用ContentProvider存储数据
网络存储数据

SharedPreferences
是一个采用Key/value的方式存储轻量级数据的接口。

轻量级的数据存储方式
采用Key/value的方式进行映射

SharedPreferences的简单使用

初始化SharedPreferences
/***
* 获得SharedPreferences对象 单例
* name --> 存储的文件名
* MODE_APPEND:检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
* MODE_WORLD_WRITEABLE:允许其他应用写入数据到该文件。
* MODE_WORLD_READABLE:允许其他应用读取该文件
* MODE_PRIVATE:默认操作模式,代表该文件是私有数据,只能被应用本身访问
*
*/
sharedPreferences = getSharedPreferences("name", Context.MODE_PRIVATE);

存储数据
//以键值对的方式存储数据
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString("userName","姓名");
edit.putString("password","密码");
edit.commit();

读取数据
/***
* 读取数据
* s --> key
* s1 --> 默认值
*/
String inputUserName = sharedPreferences.getString("userName", "无数据");
String inputPassword = sharedPreferences.getString("password", "无数据");
Toast.makeText(this, "userName -->"+inputUserName+"\tpassword -->"+inputPassword, Toast.LENGTH_SHORT).show();

删除数据
SharedPreferences.Editor edit = sharedPreferences.edit();
//根据key删除值
SharedPreferences.Editor userName = edit.remove("userName");
edit.commit();

清空
SharedPreferences.Editor edit = sharedPreferences.edit();
//清空数据
SharedPreferences.Editor clear = edit.clear();
edit.commit();

数据存储的位置 : data/应用程序包名/shared_prefs/文件名.xml

如何添加Android 6.0运行时权限
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getAccess();
}

private void getAccess() {
    /***
     * Build.VERSION.SDK_INT :SDK版本
     * Build.VERSION_CODES.M:常量23,即android 6.0  对应得API版本号
     */
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
        /***
         * hasAccess == 0 拥有该权限
         * hasAccess == 1 未拥有该权限
         */
        int hasAccess = ContextCompat.checkSelfPermission(getApplication(), Manifest.permission.WRITE_EXTERNAL_STORAGE);
        //获得授权
        if(hasAccess == PackageManager.PERMISSION_GRANTED){

        } else {
            //未获得授权 会弹出一个对话框(不能自定义),用户选择是否授权
            /***
             * 当前上下文环境
             * 需要授权的字符串数组
             * 请求码 requestCode 在回调方法中会用到
             */
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
        }
    } else{
        //6.0以下直接使用
    }
}

/***
 * 用户选择是否同意授权后,调用的方法
 * @param requestCode 请求码
 * @param permissions 请求的权限数组
 * @param grantResults 请求权限的结果数组
 */
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(requestCode == 1){
        //确定了授权
        if(permissions[0].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE) && grantResults[0] == PackageManager.PERMISSION_GRANTED){
            Toast.makeText(this, "确定了授权", Toast.LENGTH_SHORT).show();
        } else {
            //取消了授权
            Toast.makeText(this, "取消了授权", Toast.LENGTH_SHORT).show();
        }
    }
}

}

你可能感兴趣的:(SharedPreferences存储数据)