【问题标题】:Android Manifest attributes depending on SDK versionAndroid Manifest 属性取决于 SDK 版本
【发布时间】:2020-11-30 10:41:45
【问题描述】:

Android 11 引入了各种隐私更改,包括 scoped storage。这意味着在 Android 11 或更高版本上,该应用不再

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

但我仍然需要在 Android 10 或更低版本上维护该功能。是否可以根据 SDK 版本声明 Manifest 权限和属性?

【问题讨论】:

    标签: android android-manifest android-permissions scoped-storage


    【解决方案1】:

    here

    <uses-permission android:name="string"
        android:maxSdkVersion="integer" />
    

    android:maxSdkVersion

    应授予此权限的最高 API 级别 你的应用程序。如果您的应用程序具有权限,则设置此属性很有用 从某个 API 级别开始不再需要 requires。为了 例如,从 Android 4.4(API 级别 19)开始,它不再是 您的应用程序请求 WRITE_EXTERNAL_STORAGE 所必需的 当您的应用程序想要写入自己的权限时 外部存储上的应用程序特定目录(目录 由 getExternalFilesDir()) 提供。但是,权限是 API 级别 18 及更低级别需要。所以你可以声明这个 仅在 API 级别 18 及以下声明时才需要许可 像这样:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
         android:maxSdkVersion="18" />
    

    因此,您的 maxSdkVersion 将是 28(因为 Android 10/API 级别 29 或更高版本的应用不需要请求它)。您的问题提到了 Android 11,但阅读文档似乎允许从 Android 10 及更高版本开始。

    【讨论】:

    • 更新了我的答案,我为您的具体问题链接到了错误的东西
    • 非常感谢。顺便说一句,我的 maxSdkVersion 将是 29,这要归功于属性 android:requestLegacyExternalStorage="true"
    • 我的应用已经针对 Android 11,但我可以继续在清单中声明“requestLegacyExternalStorage”属性吗?还是违反谷歌播放政策?我已经把它拿出来了,现在当我宣布它可以工作时,它无法在 android 10 上保存文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多