权限即使被允许也返回false

时间:2018-12-26 10:52:51

标签: android kotlin permissions

我正在检查我的应用程序是否可以访问相机并写入外部存储,但是即使在给我应用程序后,仍然第一次被要求获得许可,仍然返回false,这是我的代码

Value

因此,如果我使用此函数getPermission,它将首次返回false(在屏幕上,我允许我的应用访问相机和存储设备),然后在下一个回合中(我返回家庭活动,然后再次打开此Camera活动)到了没有提示我的时间,我的应用程序开始使用相机。

3 个答案:

答案 0 :(得分:3)

您的问题完美地描述了指定的行为。方法requestPermissions命令系统执行以下操作:

  1. 暂停活动
  2. 启动系统提供的活动,向用户询问权限
  3. 恢复您的活动
  4. 调用其onRequestPermissionsResult回调

在系统端设置完此过程后,将立即返回对requestPermissions的调用。

答案 1 :(得分:0)

如@Marko回答中所述,我所缺少的只是onRequestPermissionsResult回调,这是代码:

 //the is a overridden method
 override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
    if(requestCode==1){
        if(grantResults[0]==PERMISSION_DENIED && grantResults[1]== PERMISSION_DENIED){
            AlertDialogBox().createBuilder(this,"Permission","Camera and Storage permission denied","ok")
        }else if(grantResults[1]== PERMISSION_DENIED){
            AlertDialogBox().createBuilder(this,"Permission","Storage permission denied","ok")
        }else if(grantResults[0]== PERMISSION_DENIED){
            AlertDialogBox().createBuilder(this,"Permission","Camera permission denied","ok")
        }
    }
    super.onRequestPermissionsResult(requestCode, permissions, grantResults)

}

答案 2 :(得分:0)

尝试在清单文件中添加以下几行可能有助于您解决问题。

<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    tools:remove="android:maxSdkVersion"/>