当目标dk版本= 30时,无法在外部存储上创建目录



我正试图在下载文件夹中创建一个目录,以存储从我的apk下载的文件。在Android 11中,当targetsdkversion小于30时,它是成功的,但当我在build.gradle中使targetsdkvversion=30时,我既不能在任何文件夹中创建目录也不能列出文件。

Directory temp = await getExternalStorageDirectory();
String savedPath = '${temp.parent.parent.parent.parent.path}/Download/Short Videos';

\ Here savedPath = /storage/emulated/0/Download/Short Videos
if (!Directory(savedPath).existsSync()) {
Directory(savedPath).createSync();
}

我应该对androidmanifest.xml和应用程序级build.grade进行哪些更改,以便可以创建外部存储上的目录,并在目录中列出文件?

从Android 11(API 30级(开始,对访问外部存储添加了一些限制。在Android 11上运行但目标为Android 10(API 29级(的应用程序仍然可以请求requestLegacyExternalStorage属性。此标志允许应用程序暂时选择退出与作用域存储相关联的更改,例如授予对不同目录和不同类型媒体文件的访问权限。将应用程序更新为目标Android 11后,系统会忽略requestLegacyExternalStorage标志。

getApplicationContext((.getExternalFilesDir("(将为您提供应用程序的特定外部存储目录,其他应用程序将无法访问其内容。

最新更新