在 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) 中检查自定义权限的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 Api 23 (6.0) 进行编译并维护旧的权限系统(安装时)?
在 Android 8.0 中未创建外部目录文件夹,但当目标 SDK 版本为 26 时,它在 6.0 和 7.0 设备中工作