将 android 系统从 10 更新到 11 时 isExternalStorageLegacy 为 false

Posted

技术标签:

【中文标题】将 android 系统从 10 更新到 11 时 isExternalStorageLegacy 为 false【英文标题】:isExternalStorageLegacy is false when update android system from 10 to 11 【发布时间】:2021-12-22 00:36:46 【问题描述】:

在我的项目清单文件中

    android:preserveLegacyExternalStorage="true"
    android:requestLegacyExternalStorage="true"

我们有一个范围存储的迁移方案。我们在 android 10 上使用旧版存储,但我们希望在版本更新到 11 时进行迁移。

我们已在 android 10 设备上安装应用程序。后来我们更新到安卓系统11。 当我们启动应用程序Environment.isExternalStorageLegacy()

返回

android:preserveLegacyExternalStorage 为 true 但返回 false 。你有什么理由吗?

【问题讨论】:

【参考方案1】:

因为 Android 11 不接受旧版存储,如下所示。系统忽略您的android:requestLegacyExternalStorage="true" 字段。

注意:将应用更新为面向 Android 11(API 级别 30)、系统忽略requestLegacyExternalStorage属性 当您的应用在 Android 11 设备上运行时,您的应用必须 准备好支持范围存储并为用户迁移应用数据 那些设备。 Android Data Storage

【讨论】:

我知道这一点,但我需要将我的文件迁移到范围存储,并且我已经阅读了 android:preserveLegacyExternalStorage 这个标志在 android 11 上激活 legacyStorage。我尝试了 2 个案例;第一种情况我已经在 android 11 上安装了我的应用程序(目标 10),然后我将其升级到新的 apk(目标 11 带有保留标志)并且 legacystorage 处于活动状态。但在第二种情况下,我稍后在 android 10 设备上安装了我的应用程序(目标 10)我升级了新版本(目标 11 的应用程序)然后我将系统更新到 11 我需要迁移我的文件但保存器标志不影响

以上是关于将 android 系统从 10 更新到 11 时 isExternalStorageLegacy 为 false的主要内容,如果未能解决你的问题,请参考以下文章

将文件下载到 Android 11 上的下载文件夹

从 3.6 更新到 Android Studio 4.0 后构建具有 NDK 支持的项目时出错

将项目更新到 android 10 后 onCreate 活动崩溃

将文件下载进度从 PCL 更新到 Xamarin.Android

Android 11 中的位置更新

如何对Android的版本进行检测与更新