只需要较旧的Android版本的权限:maxSdkVersion不起作用?

rek*_*ire 8 android android-manifest android-permissions

我想仅为旧设备提供一些权限以实现兼容性.所以我做了一些研究,发现这里:

android: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" />
Run Code Online (Sandbox Code Playgroud)

我试图实现它,但它没有用.所以我建立了这个简单的测试:

<uses-permission
    android:name="android.permission.WRITE_SMS"
    android:maxSdkVersion="3" />
Run Code Online (Sandbox Code Playgroud)

据我所知,只有API级别为1-3的设备才需要此权限,但即使在API 18设备上,我也会收到此权限请求.我有什么不对或者这个功能坏了吗?

ozb*_*bek 8

maxSdkVersion属性是在API级别19中添加的(文档应该已经提到过).参考.:

介绍maxSdkVersion for <uses-permission>

这样,应用程序可以在操作系统的更高版本上运行时自动落下其权限请求,这些权限不再相关,但可能会让用户感到惊慌.一个典型的例子是WRITE_EXTERNAL_STORAGE,从KLP开始,对于一个应用来说,仅仅为了满足自己的大数据需求而不需要在多个应用之间进行实际的文件系统共享.

错误9761041

更改ID:I60130af3a108fe4a750c356038a1c8cb897e9c8b (丢失,可以是Google内部更改)

看起来Android 4.4当时还没有被命名为KK :)

  • 似乎没有'minSdkVersion` ..奇怪.例如,自4.4以来只需要`android.permission.READ_EXTERNAL_STORAGE`来读取文件,例如'open with'数据过滤器方案. (2认同)