gpt4 book ai didi

Android M - 无法检查运行时权限

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:30 24 4
gpt4 key购买 nike

我刚刚开始在 Android M 上使用运行时权限。我在 AndroidManifest.xml 中声明了 CAMERA、READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE

问题是,如果用户转到“设置”并如下所示明确关闭权限,我无法检查我的应用是否启用了相机或存储权限

enter image description here

我使用此代码段来检查我的应用是否具有特定权限:

public static boolean hasPermission(Context c, String permission) {
if (Build.VERSION.SDK_INT >= 23) {
return ContextCompat.checkSelfPermission(c, permission) == PackageManager.PERMISSION_GRANTED;
}
return true;
}

令人惊讶的是,即使我在“设置”中关闭了相机和存储权限,每次检查都会返回 true(授予)。

我的targetSdkVersion是23

这是 Google 提供的预期行为吗?我环顾了整个网络,仍然找不到任何关于处理显式调用权限的文档。

最佳答案

再次检查 onRestart() 中的权限。

@TargetApi(Build.VERSION_CODES.M)
@Override
protected void onRestart() {
super.onRestart();
checkForPermission();
}


@TargetApi(Build.VERSION_CODES.M)
private void checkForPermission() {
int permissionCheck = checkSelfPermission(Manifest.permission.READ_CONTACTS);
if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "Granted");
} else {
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.READ_CONTACTS)) {
Log.d(TAG, "Contacts Permission Required!!");
createSnackbar("Contacts Permission Required!!", "Try Again");
}
ActivityCompat.
requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_CONTACT);

}
}

查看此链接以获取更多信息: https://github.com/sagarjogadia28/PermissionSample/

关于Android M - 无法检查运行时权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38121104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com