在android 10中找不到真实设备的手机存储器中的文件
我正在使用三星A30s手机访问手机存储文件。我的文件在设备中的位置是/storage/simulated/0/My_files/。我在我的_files目录中保存了一些文件,但我下面的代码没有 不显示此目录下包含的任何文件 那么,如何才能在手机存储器中获取属于此MY_files目录的所有文件在android 10中找不到真实设备的手机存储器中的文件,android,Android,我正在使用三星A30s手机访问手机存储文件。我的文件在设备中的位置是/storage/simulated/0/My_files/。我在我的_files目录中保存了一些文件,但我下面的代码没有 不显示此目录下包含的任何文件 那么,如何才能在手机存储器中获取属于此MY_files目录的所有文件 File Directory = new File("/storage/emulated/0/MY_FIlES/"); File[] files = Directory.listFiles
File Directory = new File("/storage/emulated/0/MY_FIlES/");
File[] files = Directory.listFiles();
但文件返回空值
注意:我有访问文件的权限(读取外部存储)
重要的是,我用最新的API更新了我的手机。但在更新之前,我使用了这个路径,“/sdcard/MY_FIlES/,它工作得很好。首先,对于您计划分发的应用程序,请使用
上下文
、环境
或存储卷
(仅限Android 11)上的方法来查找要使用的基本目录
对于Android 10和11,您需要将Android:requestLegacyExternalStorage=“true”
添加到清单中的
元素中。这将使您进入传统存储模型,并且您现有的外部存储代码将正常工作
请注意,在Android 11+中,无论您是否请求了
write\u EXTERNAL\u STORAGE
,您都无法写入该目录。Google非常希望您使用存储访问框架(例如,ACTION\u OPEN\u DOCUMENT
),这样用户就可以更好地控制文件放在设备上或选择的云存储提供商中的位置。我想在@commonware答案中添加更多内容。根据Android的存储更新,他们在Android 11中强制执行范围存储
版本
但为了给开发者额外的测试时间,针对Android 10的应用程序(API级别29)仍然可以请求requestLegacyExternalStorage
属性。此标志允许应用程序暂时退出与作用域存储相关的更改,例如授予对不同目录和不同类型媒体文件的访问权限。将应用程序更新到目标安卓11后,系统将忽略requestLegacyExternalStor年龄标志
如果您的应用程序在Android 10
设备上运行时选择超出范围的存储,建议您继续在应用程序的清单文件中将requestLegacyExternalStorage
设置为true。这样,您的应用程序可以在运行Android 10的设备上继续按预期运行
有关这方面的更多信息,请检查我在最新的API 29(Android 10)中更新了我的手机。但在更新之前,我使用了此路径“/sdcard/my_FIlES/,它工作正常。在清单的元素中添加“Android:requestLegacyExternalStorage=true”,问题就解决了。谢谢