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();
添加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();
}
}
}
}
网友评论