无法访问 Android Q 中的存储
Unable to access storage in Android Q
尽管具有读写权限,但我无法访问 Android 中的 sdcard 10。这是我列出所有目录的方法。
File root = new File("/mnt/sdcard/");
File[] subFiles = root.listFiles();
for(File file : subFiles) {
if(file.isDirectory()) {
String str = text.getText().toString() + "\n";
str+=file.getAbsolutePath();
text.setText(str);
}
}
如果我使用 /mnt/
而不是 /mnt/sdcard/
我可以看到 sdcard
目录列在那里但是当我使用 /mnt/sdcard/
时,subFiles
是 null
。我不知道这是关于新 android 10 版本的问题还是模拟器的问题。我使用 android Studio 的默认模拟器进行调试。
This is a temporary solution. From Android 11 Scoped Storage have to be used.
问题是 requestLegacyExternalStorage
未在清单文件中设置为 true
。由于默认情况下对外部存储的范围访问,它在 Android 10 或更高版本中设置为 false
。在 AndroidManifest.xml
中添加这一行解决了我的问题。
<manifest ... >
<!-- This attribute is "false" by default on apps targeting
Android 10 or higher. -->
<application
android:requestLegacyExternalStorage="true" ........ >
......
</application>
</manifest>
尽管具有读写权限,但我无法访问 Android 中的 sdcard 10。这是我列出所有目录的方法。
File root = new File("/mnt/sdcard/");
File[] subFiles = root.listFiles();
for(File file : subFiles) {
if(file.isDirectory()) {
String str = text.getText().toString() + "\n";
str+=file.getAbsolutePath();
text.setText(str);
}
}
如果我使用 /mnt/
而不是 /mnt/sdcard/
我可以看到 sdcard
目录列在那里但是当我使用 /mnt/sdcard/
时,subFiles
是 null
。我不知道这是关于新 android 10 版本的问题还是模拟器的问题。我使用 android Studio 的默认模拟器进行调试。
This is a temporary solution. From Android 11 Scoped Storage have to be used.
问题是 requestLegacyExternalStorage
未在清单文件中设置为 true
。由于默认情况下对外部存储的范围访问,它在 Android 10 或更高版本中设置为 false
。在 AndroidManifest.xml
中添加这一行解决了我的问题。
<manifest ... >
<!-- This attribute is "false" by default on apps targeting
Android 10 or higher. -->
<application
android:requestLegacyExternalStorage="true" ........ >
......
</application>
</manifest>