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

时间:2013-12-02 12:15:06

标签: android android-manifest android-permissions

我想仅为旧设备提供一些权限以实现兼容性。所以我做了一些研究,发现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设备上,我也会收到此权限请求。我有什么不对或者这个功能坏了吗?

2 个答案:

答案 0 :(得分:8)

在API级别19中添加了

maxSdkVersion属性( docs应该提到)。 Ref.

  

<uses-permission>

引入maxSdkVersion      

这样,应用程序可以自动落实其权限请求   在操作系统的更高版本上运行时,这些权限为否   相关性较长,但可能会令用户惊慌失措。一个典型的例子   是WRITE_EXTERNAL_STORAGE,从KLP开始变得不需要应用程序   仅将外部存储卷用于其自身的大数据需求,   无需在多个应用程序之间共享实际的文件系统。

     

错误9761041

     

更改ID:I60130af3a108fe4a750c356038a1c8cb897e9c8b (缺少,可以是Google内部更改)

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

答案 1 :(得分:0)

在具有Android 5.0.2的HTC上,外部存储在拥有权限和限制时失败:android.permission.WRITE_EXTERNAL_STORAGEmaxSdkVersion = 18。 所以我需要将maxSdkVersion更改为22.