【问题标题】:How to use Android's File Chooser to pick from my app's folder如何使用 Android 文件选择器从我的应用程序文件夹中进行选择
【发布时间】:2021-05-06 00:43:52
【问题描述】:

我的目标是 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 android-intent filechooser


【解决方案1】:

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

也不是 ACTION_OPEN_DOCUMENT 用于选择文件。也不是 ACTION_OPEN_DOCUMENT_TREE 用于选择目录。

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

因此,您尝试的对 Android Q 之后的设备毫无意义。

【讨论】:

  • 这没有意义,因为我可以很高兴地将文件写入该文件夹。我看不懂?还是我必须滚动自己的文件选择器才能在列表中看到它们?
  • 如果你会写,你当然可以读。列出目录的内容并将其放入警报对话框很容易,并且您自己的文件选择器已准备就绪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-26
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多