android - 我如何在 Android 运行时请求权限?

标签 android permissions android-manifest

我正在开发一个 Android 应用程序,我必须允许用户使用相机扫描 QRCode。

在每个 Android 版本(除了 > 6.0)中我都没有问题,但在棉花糖中我必须手动启用“设置 -> 应用程序 -> 权限”的权限 (这很奇怪,因为我已经在 list 中声明了相机权限)。

我阅读了 dev-android 网站的文档,但我不明白一些事情:

if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {

    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {

        } else {    
        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

    }
}

代码的第二部分:

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! Do the
                // contacts-related task you need to do.

            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}

我如何使这段代码适应我的问题?

什么是“MY_PERMISSIONS_REQUEST_READ_CONTACTS”?

最佳答案

MY_PERMISSIONS_REQUEST_READ_CONTACTS 是一个静态 int 变量,您需要在 Activity 中设置。它是 onRequestPermissionsResult 中使用的请求代码。这是必需的,以便您知道在 onRequestPermissionsResult 中对哪个权限进行了操作(无论是接受还是拒绝)。

在 Activity 的顶部只需放置 private static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 1; (数字可以是您想要的任何数字)

关于android - 我如何在 Android 运行时请求权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37441133/

相关文章:

android - 共享库项目 Activity 的单一实例?

android - 一个在电视和平板电脑上运行的应用程序(带 GPS)

Java GET 请求 PHP URL 未发送

android - 为什么android Jni在调用共享库中的c方法时崩溃?

php - 如何让 PHP 脚本以 root 身份运行 shell 脚本?

android - 在 Android 存储中创建、存储和访问文件?

android - 应用已关闭但音乐仍在播放

android - 从通知中单击时,使用后退堆栈的向上导航不起作用

android - 无法让 android 连接到互联网(权限被拒绝)

android LicenseValidator : Signature verification failed