当前位置: 首页 > 面试题库 >

经过测试的READ_PHONE_STATE的Android M权限(危险权限)

上官琦
2023-03-14
问题内容

如果我尝试使用 getLine1Number() 获取电话号码时设备运行的是Android 6.0或更高版本:

java.lang.SecurityException:要求READ_PHONE_STATE:用户10184和当前进程都没有android.permission.READ_PHONE_STATE。
这出来了。

我宣布允许为:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

问题答案:

在Android 6.0中,您需要明确要求用户授予权限。仅在清单中声明它是不够的。

docs中的这篇文章是开始学习新模型的好地方,但我会做一个简短的总结。

每次执行需要“危险许可”的操作时,都需要检查当前是否已授予许可,因为用户可以随时将其撤消。

这可以通过该checkSelfPermission方法来完成。

if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_PHONE_STATE)
    != PackageManager.PERMISSION_GRANTED) {
        // We do not have this permission. Let's ask the user
}

您可以使用requestPermissions方法请求权限,例如

ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSION_READ_STATE);

其中PERMISSION_READ_STATE是您定义的常数整数,以便稍后检入回调方法。

然后onRequestPermissionsResult,您将在活动中覆盖并查看是否已授予许可。如果是这样,则可以继续html" target="_blank">执行危险的操作。

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case PERMISSION_READ_STATE: {
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // permission granted!
                // you may now do the action that requires this permission
            } else {
                // permission denied
            }
            return;
        }

    }
}


 类似资料:
  • 本文向大家介绍Android 中的危险权限详细整理,包括了Android 中的危险权限详细整理的使用技巧和注意事项,需要的朋友参考一下 Android 中的危险权限详细整理 前言: Android 中有上百种权限,现在将所有的权限归为两类: 一类是普通权限 一类的危险权限 普通权限是指那些不会威胁到用户安全和隐私的权限,这部分权限系统会自动帮我们进行授权不需要手动操作。危险权限则表示那些可能会触及

  • 我正试图让我的应用程序为新的Android M权限更改做好准备,发现了一些奇怪的行为。我的应用程序使用相机意图机制,允许用户从相机中获得一张照片。但是在另一个活动中,需要使用具有camera权限的camera本身(因为库依赖项card.io需要这样做)。 这是我用来让用户用相机点击一张照片和/或选择一张图像的代码 我在活动中单击按钮时调用。当我没有相机权限在我的应用程序,它的工作很好,但与添加,我

  • http://${host}:${port}/auth/realms/${realm_name}/authz/protection/resource_set 但是我没有看到一个API来CRUD授权策略和权限。 我试图通过protection/resource_setendpoint创建策略,但失败了:

  • 我想使用 null 我想创建自定义组权限,只问我一个请求,只给我一个响应。 谢谢

  • 问题内容: 在Windows上的Python中,是否可以确定用户是否具有访问目录的权限?我看了一下,但结果不正确。 难道我做错了什么?有没有更好的方法来检查用户是否有权访问目录? 问题答案: 在Windows中检查权限可能很复杂。 您是在谈论简单的读取访问,即读取目录的内容吗?测试权限的最可靠方法是尝试访问目录(例如执行)并捕获异常。 同样,为了正确地解释路径,您必须使用原始字符串或转义反斜杠(’