Android: 如何在 ACTION_GET_CONTENT 中设置初始目录
Android: How to set initial directory in ACTION_GET_CONTENT
我需要我的用户从他们的外部文件中选择一个备份文件(以恢复),有两个问题。
我给了我正在写的备份文件扩展名 .sbu 但我无法弄清楚如何使文件资源管理器 ACTION_GET_CONTENT 意图只过滤 .sbu文件。不过现在,我将意图类型设置为 */*
另一个更重要的问题,当我的 INTENT 打开默认文件资源管理器时,我请求帮助设置默认初始目录。以下是我目前的代码,但似乎不起作用。
Intent ioIntent = new Intent(Intent.ACTION_GET_CONTENT);
ioIntent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/simple_information_manager/backup")), "*/*");
ioIntent.addCategory(Intent.CATEGORY_OPENABLE);
ioIntent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
if (ioIntent.resolveActivityInfo(parent.getPackageManager(), 0) != null) {
doExit = false;
startActivityForResult(Intent.createChooser(ioIntent, getString(R.string.choose_file)), RESTORE);
} else {
Snackbar.make(listView.getRootView(), "Directory chooser not available", Snackbar.LENGTH_LONG).show();
}
I gave the backup file I am writing an extension of .sbu and I was not able to figure out how to make the file explorer on ACTION_GET_CONTENT intent, to filter only .sbu files
那是不可能的。
set a default initial directory when my INTENT opens up the default file explorer
ACTION_GET_CONTENT
协议中没有这方面的内容。很大程度上,这是因为 ACTION_GET_CONTENT
没有绑定到文件和目录。
此外,没有 "default file explorer",尤其是 Android 4.3 及更早版本。你可以争辩说存储访问框架 UI 扮演了这个角色,尽管我倾向于认为它更像是 Android 等同于桌面操作系统的 "file-open" 和 "file-save-as" 对话框和相关平台。
您有两个主要的行动方案:
停止考虑文件、扩展名、目录,坚定地考虑内容。在这种情况下,您可以在 Android 4.4+ 上 use ACTION_OPEN_DOCUMENT
。它提供 EXTRA_INITIAL_URI
,这让人想起您的 "default initial directory" 请求。
停止考虑使用 Intent
,而是 use a file/directory chooser library。这些在内容来源方面没有那么灵活,但它们更适合您的 file/directory 心态,并且可能提供更符合您期望的功能。
我需要我的用户从他们的外部文件中选择一个备份文件(以恢复),有两个问题。
我给了我正在写的备份文件扩展名 .sbu 但我无法弄清楚如何使文件资源管理器 ACTION_GET_CONTENT 意图只过滤 .sbu文件。不过现在,我将意图类型设置为
*/*
另一个更重要的问题,当我的 INTENT 打开默认文件资源管理器时,我请求帮助设置默认初始目录。以下是我目前的代码,但似乎不起作用。
Intent ioIntent = new Intent(Intent.ACTION_GET_CONTENT); ioIntent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/simple_information_manager/backup")), "*/*"); ioIntent.addCategory(Intent.CATEGORY_OPENABLE); ioIntent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); if (ioIntent.resolveActivityInfo(parent.getPackageManager(), 0) != null) { doExit = false; startActivityForResult(Intent.createChooser(ioIntent, getString(R.string.choose_file)), RESTORE); } else { Snackbar.make(listView.getRootView(), "Directory chooser not available", Snackbar.LENGTH_LONG).show(); }
I gave the backup file I am writing an extension of .sbu and I was not able to figure out how to make the file explorer on ACTION_GET_CONTENT intent, to filter only .sbu files
那是不可能的。
set a default initial directory when my INTENT opens up the default file explorer
ACTION_GET_CONTENT
协议中没有这方面的内容。很大程度上,这是因为 ACTION_GET_CONTENT
没有绑定到文件和目录。
此外,没有 "default file explorer",尤其是 Android 4.3 及更早版本。你可以争辩说存储访问框架 UI 扮演了这个角色,尽管我倾向于认为它更像是 Android 等同于桌面操作系统的 "file-open" 和 "file-save-as" 对话框和相关平台。
您有两个主要的行动方案:
停止考虑文件、扩展名、目录,坚定地考虑内容。在这种情况下,您可以在 Android 4.4+ 上 use
ACTION_OPEN_DOCUMENT
。它提供EXTRA_INITIAL_URI
,这让人想起您的 "default initial directory" 请求。停止考虑使用
Intent
,而是 use a file/directory chooser library。这些在内容来源方面没有那么灵活,但它们更适合您的 file/directory 心态,并且可能提供更符合您期望的功能。