在 Android 6.0 (sdk 23) 中检查自定义权限

Posted

技术标签:

【中文标题】在 Android 6.0 (sdk 23) 中检查自定义权限【英文标题】:Checking custom permissions in Android 6.0 (sdk 23) 【发布时间】:2015-11-23 20:29:00 【问题描述】:

我有几个关于“自定义”权限在 android 6.0 中如何使用新的运行时权限的问题。例如,像这样声明的自定义权限。

<permission android:description="com.mycompany.myapp.DEADLY_ACTIVITY"
        android:label="string resource"
        android:name="string"
        android:protectionLevel="dangerous" />

我在网上找不到任何说明如何在 Android M 中运行时处理此类自定义权限的信息。

我是否应该在运行时处理和检查方法中的 “com.mycompany.myapp.DEADLY_ACTIVITY” 权限,就像我使用 checkSelfPermission() 检查危险的 android 权限(相机、日历等)一样?并根据 Google 的新标准提供理由?

非常感谢!

【问题讨论】:

我想这是不可能的。但是,如果用户在您的自定义授权对话框中单击“确定”,则应该可以向请求应用发送令牌,并要求该应用向您发送令牌以启动您的致命活动、活动别名或服务 【参考方案1】:

是的。您可以使用您在清单中声明的​​权限名称通过ContextCompat.checkSelfPermission 方法检查权限。 因此,如果您在清单中声明了这一点:

<permission android:description="com.mycompany.myapp.DEADLY_ACTIVITY"
    android:label="string resource"
    android:name="com.mycompany.myapp.permissionName"
    android:protectionLevel="dangerous" />

然后你可以在应用程序的任何地方检查权限:

if(ContextCompat.checkSelfPermission(context, "com.mycompany.myapp.permissionName") == PackageManager.PERMISSION_GRANTED

【讨论】:

以上是关于在 Android 6.0 (sdk 23) 中检查自定义权限的主要内容,如果未能解决你的问题,请参考以下文章

Android 6.0以上动态请求权限的工具类

Android权限篇 Android 6.0动态权限申请

Android SDK6.0 运行时权限问题

是否可以使用 Api 23 (6.0) 进行编译并维护旧的权限系统(安装时)?

在 Android 8.0 中未创建外部目录文件夹,但当目标 SDK 版本为 26 时,它在 6.0 和 7.0 设备中工作

安装SDK 6.0