我正在检查我的应用程序是否可以访问相机并写入外部存储,但是即使在给我应用程序后,仍然第一次被要求获得许可,仍然返回false,这是我的代码
Value
因此,如果我使用此函数getPermission,它将首次返回false(在屏幕上,我允许我的应用访问相机和存储设备),然后在下一个回合中(我返回家庭活动,然后再次打开此Camera活动)到了没有提示我的时间,我的应用程序开始使用相机。
答案 0 :(得分:3)
您的问题完美地描述了指定的行为。方法requestPermissions
命令系统执行以下操作:
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"/>