Android:棉花糖中的权限被拒绝导致崩溃

Android: Permissions deny in marshmallow cause crash

我有一个应用程序有联系人列表相机,我在[=33]中设置了这两个权限=] Manifest。应用程序在 API 级别 21 及以下运行良好。

当我在 Marshmallow API 级别 23 中从 Play 商店 安装应用程序时,在安装它时没有询问权限,当我签入设置应用程序拒绝的所有权限时。

出于这个原因,当我在 Marshmallow 中打开应用程序时,应用程序崩溃了。

谁能告诉我如何在 Marshmallow 中授予权限而不崩溃

你需要在 marshmallow 中请求许可,没有其他方法可以解决这个问题。

要检查权限,您可以使用此

checkSelfPermission(Manifest.permission.READ_CONTACTS);

如果用户授予权限,它将 return 0 否则将 return 1.

如果没有给予许可,请向用户征求许可

requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
        10);

并检查用户是否授权

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    switch (requestCode) {
        case 10:
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // Permission Granted
                Toast.makeText(MainActivity.this, "READ_CONTACTS granted", Toast.LENGTH_SHORT)
                        .show();
            } else {
                // Permission Denied
                Toast.makeText(MainActivity.this, "READ_CONTACTS Denied", Toast.LENGTH_SHORT)
                        .show();
            }
            break;
        default:
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

有关详细信息,请参阅 this

如果你想在 pre-marshmallow 设备中提供支持,你还需要使用

ContextCompat.checkSelfPermission()

ActivityCompat.requestPermissions()

其余的一切都和我上面提到的一样。