我想仅为旧设备提供一些权限以实现兼容性。所以我做了一些研究,发现this here:
机器人:maxSdkVersion
应用此权限的最高API级别。如果从某个API级别开始不再需要您的应用所需的权限,则设置此属性非常有用。例如,从Android 4.4(API级别19)开始,当您的应用想要写入外部存储上自己的特定于应用程序的目录(getExternalFilesDir提供的目录)时,您的应用不再需要请求WRITE_EXTERNAL_STORAGE权限())。但是,API级别18及更低级别需要权限。因此,您可以声明此权限仅在API级别18之前需要,声明如下:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
我试图实现它,但它没有用。所以我建立了这个简单的测试:
<uses-permission
android:name="android.permission.WRITE_SMS"
android:maxSdkVersion="3" />
据我所知,只有API等级为1-3的设备才需要此权限,但即使在API 18设备上,我也会收到此权限请求。我有什么不对或者这个功能坏了吗?
答案 0 :(得分:8)
maxSdkVersion
属性( docs应该提到)。 Ref.:
为
引入maxSdkVersion<uses-permission>
这样,应用程序可以自动落实其权限请求 在操作系统的更高版本上运行时,这些权限为否 相关性较长,但可能会令用户惊慌失措。一个典型的例子 是WRITE_EXTERNAL_STORAGE,从KLP开始变得不需要应用程序 仅将外部存储卷用于其自身的大数据需求, 无需在多个应用程序之间共享实际的文件系统。
错误9761041
更改ID:I60130af3a108fe4a750c356038a1c8cb897e9c8b (缺少,可以是Google内部更改)
当时看起来Android 4.4还没有被命名为KK:)
答案 1 :(得分:0)
在具有Android 5.0.2的HTC上,外部存储在拥有权限和限制时失败:android.permission.WRITE_EXTERNAL_STORAGE
和maxSdkVersion = 18
。
所以我需要将maxSdkVersion更改为22.