我的应用程序从用户选择的文件中读取信息(然后使用它进行奇怪而美妙的事情!)。为简单起见,“文件资源管理器”应用程序指向特定的起始目录(该应用程序先前已在其中存储此类文件)。
这很好,在我的Oreo手机上除外(Nexus5),即使在存在备用文件管理器应用程序的情况下,始终会启动内置的Google应用程序“文件”。 文件不响应意图的uri ;因此,用户每次必须导航到该目录。以下是相关代码:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath()
+ "/Documents/" + getResources().getString(R.string.app_name));
intent.setDataAndType(uri, "text/plain");
try {
startActivityForResult(Intent.createChooser(intent, "Open folder"), request_code);
}
catch (android.content.ActivityNotFoundException ex)
{
Toast.makeText(this, "Please install a File Manager.",
Toast.LENGTH_SHORT).show();
}
我徒劳地寻找解决方案。如何解决?
我感兴趣的选项:
答案 0 :(得分:1)
为简单起见,“文件资源管理器”应用程序指向特定的起始目录(该应用程序以前曾存储过此类文件)。
抱歉,没有Intent
动作。
除了在我的Oreo手机(Nexus5)上运行外,其他方法都可以正常运行
它将在数亿个设备上失败。 ACTION_GET_CONTENT
不需要Uri
。引用the documentation:
请注意,意图中未提供URI,因为对返回的数据最初来自何处没有限制。
还请注意,ACTION_GET_CONTENT
不一定必须包含文件浏览器,设备也不必具有文件浏览器应用程序。
文件不响应意图的uri;
ACTION_GET_CONTENT
实现不应响应Uri
。
任何其他不涉及使用文件选择器库的解决方案
编写您自己的文件选择器UI。或者,从您的应用程序中删除该功能。