【问题标题】:Android: Permissions deny in marshmallow cause crashAndroid:棉花糖中的权限拒绝导致崩溃
【发布时间】:2016-05-12 15:33:25
【问题描述】:

我有一个具有 联系人列表相机 的应用程序,我在 Android Manifest 中设置了这两个权限。该应用程序在API 级别 21 及以下。

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

因此,当我在 Marshmallow 中打开应用程序时,应用程序会崩溃。

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

【问题讨论】:

  • 您可以添加您使用的权限代码吗?我有一个应用程序来播放使用相机的商店,它与棉花糖一起使用!当您从 Google Play 下载应用程序时,当它崩溃时,您会收到日志错误。你也可以发布日志吗?
  • 在设置中,默认情况下该应用程序的相机权限是拒绝的。通过从设置中手动授予权限,应用程序可以正常工作
  • 试试这个可能有用stackoverflow.com/a/41221852/5488468

标签: android permissions android-permissions android-6.0-marshmallow user-permissions


【解决方案1】:

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

要检查权限,你可以使用这个

checkSelfPermission(Manifest.permission.READ_CONTACTS);

如果用户给了权限,则返回0,否则返回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()

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

【讨论】:

    猜你喜欢
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 2016-10-25
    相关资源
    最近更新 更多