gpt4 book ai didi

java - 无法在 Android 10 中创建目录

转载 作者:行者123 更新时间:2023-12-05 07:15:51 30 4
gpt4 key购买 nike

我无法在 android 10 中创建目录。它在 android Oreo 之前的设备上工作。

我尝试了两种创建文件夹的方法。

使用 File.mkdir():

   File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pastebin");
if (!f.isFile()) {
if (!(f.isDirectory())) {
success = f.mkdir();
}

这里,变量success总是false,这意味着目录没有被创建。

使用 Files.createDirectory():

   File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pastebin");
if (!f.isFile()) {
if (!(f.isDirectory())) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
try {
Files.createDirectory(Paths.get(f.getAbsolutePath()));
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), R.string.unable_to_download, Toast.LENGTH_LONG).show();
}
} else {
f.mkdir();
}
}

导致此异常的原因:

pzy64.pastebinpro W/System.err: java.nio.file.AccessDeniedException: /storage/emulated/0/Pastebin
pzy64.pastebinpro W/System.err: at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:391)
pzy64.pastebinpro W/System.err: at java.nio.file.Files.createDirectory(Files.java:674)

我已经实现了运行时权限和

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

一切就绪。

最佳答案

正如 2019 年 3 月首次披露的那样,默认情况下您无法再访问 external storage 上的任意位置。或 removable storage在 Android 10+ 上。这包括 Environment.getExternalStorageDirectory()和其他方法 Environment (例如,getExternalStoragePublicDirectory()

对于 Android 10 和 11,您可以添加 android:requestLegacyExternalStorage="true"给你的<application> list 中的元素。这会让您选择使用旧存储模型,并且您现有的外部存储代码将正常工作。

否则,您的选择是:

  • Context 上使用方法,例如 getExternalFilesDir() , 以获取您的应用程序可以写入的外部存储目录。在 Android 4.4+ 上使用这些目录不需要任何权限。但是,当您的应用被卸载时,您存储在那里的数据将被删除。

  • 使用存储访问框架,例如 ACTION_OPEN_DOCUMENTACTION_CREATE_DOCUMENT .

  • 如果您的内容是媒体,您可以使用 MediaStore将媒体放置在标准媒体位置。

关于java - 无法在 Android 10 中创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59457961/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com