仅在目标较低 API 时请求对 Android M 的许可

Request permission on Android M only when targeting lower API

所以在我的应用程序中,我想添加一个选项,以便在用户使用 Android M 时有选择地添加权限(例如,直接拨号),但与此同时,我想拥有该权限在 API 22 或更低版本中未按要求显示,仅仅是因为它不是必需的,所以我宁愿在安装过程中不要求它(因此事实上只在 M 上提供该功能)。

因此,我了解到 M 的新模型是当用户使用 M 时它将允许可选权限,而当用户使用较低的 APIs 时它将强制这些权限。那么有什么已知的方法可以删除 API 低于 23 的那些权限吗?没有单独的口味/APK?

当 API 大于 22 时,也许将清单与那些行合并?或者有更清洁的解决方案?

这是可能的。读取 the documentation 时,有一个特殊标志仅指示 M。

使用

<uses-permission-sdk23>

仅为 Marshmallow 设备申请权限。