微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Android 的文件选择器从我的应用程序文件夹中选择

如何解决如何使用 Android 的文件选择器从我的应用程序文件夹中选择

我的目标是 Android 10(SDK 30 或更高版本) 并试图允许用户选择应用程序创建的文件。这些文件位于应用程序的文件夹中(在我的情况下类似于 /storage/emulated/0/Android/data/com.company.somePremiumTesting/files/logs )

这些文件是由这个应用编写的,调用如下:

File myExternalFile = new File(getExternalFilesDir("logs"),filename);
FileOutputStream fos = new FileOutputStream(myExternalFile);

尝试打开文件选择器,例如:

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/json");

intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI,"/storage/emulated/0/Android/data/com.company.somePremiumTesting");

startActivityForResult(intent,PICK_TRACK_FILE);

失败并显示“未找到活动 android.intent.action.OPEN_DOCUMENT_TREE:异常

如果我消除了 addCategory 和 setType,它将打开到根目录。

如何打开文件选择器以允许用户选择我创建的 .json 文件之一?

解决方法

在 Android 11 设备上,即使是文件应用程序等文件管理器也无法访问应用程序 getExternalFilesDir()。

用于选择文件的 ACTION_OPEN_DOCUMENT 也不行。也没有 ACTION_OPEN_DOCUMENT_TREE 来选择目录。

无法访问 /storage/emulated/0/Android/data 目录。

所以你的尝试对 Android Q 之后的设备毫无意义。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。