问题描述
有一个选项可以在定向到SDK 29时选择作用域存储。 通过在清单文件中添加android:requestLegacyExternalStorage =“ true”来启用旧版存储。我的应用程序的现有功能无法在Android 10上运行。
例如
我想通过启用旧版外部存储来确切选择退出范围存储。
根据我的理解,我们仍然必须在android 10上使用外部存储的新分类。
用于存储路径的DownloadManager代码段:
DownloadManager.Request request=new DownloadManager.Request(Download_Uri);
request.setDestinationInExternalPublicDir("/mappfolder/subdirectory",filename);
清单应用程序代码:
<application
android:requestLegacyExternalStorage="true"
android:name=".base.module.view.MyApplication"
android:allowBackup="false"
android:icon="@drawable/im_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:networkSecurityConfig="@xml/network_security_config"
android:supportsRtl="false"
android:theme="@style/myThemeNOActionBar"
tools:replace="android:supportsRtl"
>
解决方法
getExternalStorageDirectory()在API 29中已弃用。使用getExternalFilesDir()。
如果使用旧版外部存储,则您的应用需要WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE之类的权限。但是很快将要实施范围存储,因此您应该更改代码以改为使用MediaStore API和/或Storage Access Framework。
,通过启用旧存储,可以使用旧文件系统API在公共目录中创建特定于应用程序的目录,并访问公共存储以读取/写入文件。
但是使用DownloadManger,无法将应用程序特定的目录创建到公共存储中。