是否可以在运行时为广播接收器设置android权限级别?

Posted

技术标签:

【中文标题】是否可以在运行时为广播接收器设置android权限级别?【英文标题】:Is it possible to set android permission level for a broadcast receiver at runtime? 【发布时间】:2017-06-09 05:06:20 【问题描述】:

是否可以在 java 中以编程方式设置 IntentFilter/Intent 的保护级别,类似于我们在 androidManifest.xml 中定义它的方式:

<receiver
    android:name="my.test.receiver"
    android:protectionLevel="signature" />

我们的应用程序有一个核心库,可以在运行时促进动态广播和接收器,我们希望在这里确保它们的安全。

我在网上没有找到有关此方法的信息,不确定是否可行。如果我们可以设置一个intentFilters permission level = PermissionInfo.PROTECTION_SIGNATURE 它会起作用,但从文档看来 PermissionInfo 仅用于阅读。我能找到的唯一替代方法是声明一个特殊权限,将其与我们的广播一起发送并将其添加到我们所有的清单中:https://***.com/a/15316487/1810256

我们可能会使用这种方法,但我们更喜欢第一种方法,因为签名方法似乎更安全。

感谢任何帮助/建议!

【问题讨论】:

【参考方案1】:

引用其中一位用户(Naveed Ahmad)的话: “现在从 Android 6.0 Marshmellow 开始,你可以在运行时要求用户动态允许权限,我找到了,看看这个链接。希望它可以帮助你了解。”

https://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en

我在这里找到了它: get Android permission dynamiclly

【讨论】:

以上是关于是否可以在运行时为广播接收器设置android权限级别?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有权限的android 6中使用广播接收器启动应用程序

用于应用权限的 Android 广播接收器

具有权限级别签名的Android广播接收器不接收广播

Android 广播 - 使用权限发送和接收

Android广播阻塞、延迟问题

四大组件之BroadcastReceiver-使用权限和常用的系统广播