如何解决Android 11不在外部存储上创建应用程序目录
最近,我将智能手机更新为Android 11,并注意到我的一个应用程序在外部存储上创建目录时崩溃。我已经阅读了Android 11文档,这里是Starting in Android 11,apps cannot create their own app-specific directory on external storage
。很奇怪,因为当我打开Android / data dir时,有很多应用程序文件夹,因此有可能做到这一点,或者可能是应用程序在更新之前创建了文件夹?
解决方法
好的,我找到了一种方法。我们的应用无法创建该文件夹,但是如果我们调用getApplicationContext().getExternalFilesDir("");
,Android会为我们创建该文件夹。
非常愚蠢,如果我们想要不存在的打开目录,它将创建它,但是当我们想要自己创建它时,就会出现问题。 Android开发人员应该使我们的生活更轻松,但每次更新都会使他们变得更加困难。
, getApplicationContext().getExternalFilesDir("");
将为您提供应用程序的特定外部存储目录,其他应用程序将无法访问其内容。我相信所说的是什么意思
从Android 11开始,应用无法创建自己的特定于应用的应用 外部存储上的目录
是无法在外部存储上创建其他特定于应用程序的目录,但必须提到一个。 我发现这个article很有用。
, ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DISPLAY_NAME,currentlyDownloadingFileObject.getFileName());
values.put(MediaStore.MediaColumns.MIME_TYPE,"video/mp4");
values.put(MediaStore.MediaColumns.BUCKET_DISPLAY_NAME,"my_file.mp4");
values.put(MediaStore.Video.Media.RELATIVE_PATH,"Movies/" + "YOUR_DIRECTORY_NAME_GOES_HERE");
context.getApplicationContext().getExternalFilesDir(MediaStore.Video.Media.EXTERNAL_CONTENT_URI+"/"+getApplicationName(context));
Uri newUri newUri = context.getContentResolver()
.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,values);
// values.put(MediaStore.Video.Media.RELATIVE_PATH,"Movies/" + "YOUR_DIRECTORY_NAME_GOES_HERE");
您可以在内容值中存储一个提供 RELATIVE_PATH 的文件,如果尚未创建,它将创建目录
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。