day07

作者: 鴻9527 | 来源:发表于2019-07-12 21:24 被阅读0次

Android的存储方式

  1. 使用SharedPreferences存储数据

  2. 文件存储数据

  3. SQLite数据库存储数据

  4. 使用ContentProvider存储数据

  5. 网络存储数据

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();
            }
        }
    }
}

相关文章

网友评论

      本文标题:day07

      本文链接:https://www.haomeiwen.com/subject/hpcukctx.html