【问题标题】:Requesting android permissions only once只请求一次android权限
【发布时间】:2017-06-18 20:17:12
【问题描述】:

当我们在手机上向用户请求许可时,有没有办法通知操作系统不要再次请求此许可?不管用户的反应是什么。

【问题讨论】:

    标签: android dynamic permissions android-6.0-marshmallow


    【解决方案1】:

    如果程序不“迫切地”需要权限,您可以使用 SharedPreferences 并存储一个名为 firstTime 的变量,其布尔值为 true。 然后检查该变量的 onCreate 方法。如果为真,请询问权限,然后将值设置为假并保存。然后当用户重新运行应用程序时,它不会是“FirstTime”,因此不会提示他权限。

     SharedPreferences pref = this.getSharedPreferences("PACKAGE.NAME",MODE_PRIVATE);
     Boolean firstTime = pref.getBoolean("firstTime",true);
     if(firstTime){
     //Ask for permissions here
     pref.edit().putBoolean("firstTime",false).apply();
     }
    

    【讨论】:

    • 我有这个想法,但是由于用户可以通过选中对话框中的复选框来通知操作系统,我想知道是否有任何选项可以通过编程方式传递该参数。
    【解决方案2】:

    不,对不起。您需要跟踪您是否向用户请求权限,然后使用该信息来确定将来是否请求。

    【讨论】:

    • 任何来源?这样我就可以清楚地放弃这个想法并开始解决方法。
    • @arunwithasmile:“有什么消息来源吗?” -- 我不能向你展示不存在的东西的文档。
    【解决方案3】:

    当您以如下任何方式请求权限时,在打开的请求权限对话框中会出现一个复选框,通过选中该复选框,操作系统将不再向您请求该权限:

     if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
            } else {
                ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, RC_WRITE_EXTERNAL_STORAGE);
            }
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-22
      • 2017-06-21
      • 1970-01-01
      • 2020-06-11
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      相关资源
      最近更新 更多