仅在目标API低于Android M的情况下请求Android M权限

6
在我的应用程序中,我想添加一个选项,可以在用户使用Android M时选择性地添加权限(例如直接拨号),但同时,我希望在API 22或更低版本中不将该权限显示为必需的,因为它并不是必要的,所以我不想在安装期间请求它(因此实际上仅在M上提供该功能)。
因此,我了解到M的新模型是,当用户使用M时,它将允许可选权限,并在较低的API上强制执行这些权限。 那么有没有已知的方法可以仅在低于23的API上删除这些权限?而不必使用不同的flavours / APK?
也许可以合并仅包含这些行的清单,当API> 22时?或者有更简洁的解决方案吗?
1个回答

8
这是可能的。在阅读文档时,有一个特殊的标志来指示仅适用于M版本。
使用:
<uses-permission-sdk23>

仅适用于Marshmallow设备申请权限。


我确实阅读了文档,感谢您的快速回答,正是我所需要的。 - FrankMonza
1
请注意,在Android 6.0正式发布后,下周再仔细检查一下。很可能,这个元素名称会保持不变,因为它已经是开发过程中的最后阶段了。然而,在清单元素名称中使用m引用是相当奇怪的,所以我不能排除他们会在最后时刻切换到其他东西(例如,在<uses-permission>上已经有一个android:maxSdkVersion对应的android:minSdkVersion)。 - CommonsWare
@CommonsWare 感谢您的提醒,我一定会注意的。重要的是这个功能存在,所以希望它能够被保留。在 <uses-permission> 标签中添加一个 minSdkVersion 属性会更加清晰(或至少是一个 <uses-permission-sdk-23> 标签)。 - FrankMonza
3
@CommonsWare更新了答案,他们使用了<uses-permission-sdk23>,说实话有点丑,但仍然能够满足我的需求。 - FrankMonza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接