我正在用java实现一个android应用程序,一切都运行良好,直到我将它安装在android 13版本上。从那时起,我无法授予读取文件(特别是文本文件)的权限。我该如何解决?
我还遇到了无法从指定路径访问ExternalStorage 来获取文本文件的问题,如下所示:
/storage/emulated/0/ dictfiles/
直到SKD<=12, I was setting my path as :
private final static String PATH = "/dictfiles/";
String stringPathDirectory = Environment.getExternalStorageDirectory().getAbsolutePath() + PATH;
直到版本 sdk=12 一切都可以正常工作,而 sdk=13 则停止工作 - 权限被拒绝。
我的临时解决方案
根据SDK=13的新方式,我们可以访问:
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
因此,我在清单文件中输入了新方法所需的内容,但我仍然无法从指定的路径中读取内容。 查看上述权限,我们可以访问其他图片中的几个目录。
所以将我的包含文本文件的目录放入PICTURES目录中。
我将目录和文件的访问路径更改为:
String stringPathDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ PATH;
所以现在我的目录路径看起来像
/storage/emulated/0/Pictures/dictfiles
但是我的代码片段:
File[] files = directory.listFiles();
扫描了目录中的文件,仍然找不到我的文本文件。我认为,因为 Android 默认情况下需要图片目录中的图形文件,而且确实如此,它找到了 .jpg .png .gif 但我的 dicfiles 目录中的文本文件丢失了。因此,在我的所有文本文件中,我向文本文件添加了 .jgp 扩展名,现在代码不会跳过它们。
直到我找到另一个解决方案,我就是这样解决的,但是我在网上没有找到另一个解决方案,我已经找了很长时间了。