Android can';t将导航器设置为操作\u打开\u文档中的特定文件夹

Android can';t将导航器设置为操作\u打开\u文档中的特定文件夹,android,android-file,android-fileprovider,Android,Android File,Android Fileprovider,我想让用户在Android中的特定文件夹下选择一个文件,无论是使用内置ui还是使用第三方文件管理器。但是,我无法在新版android上使用ACTION\u OPEN\u DOCUMENT这样做。我阅读了有关需要DocumentProvider提供内容uri的文档,但是我对它感到非常困惑,因为没有“内置”uri,而且根据文档,您自己实现此类uri的目的似乎是向其他人提供文件,这不是我在这里要做的 在android实际禁止文件://uri之前,我所做的是使用ACTION\u GET\u内容和'fil

我想让用户在Android中的特定文件夹下选择一个文件,无论是使用内置ui还是使用第三方文件管理器。但是,我无法在新版android上使用
ACTION\u OPEN\u DOCUMENT
这样做。我阅读了有关需要DocumentProvider提供内容uri的文档,但是我对它感到非常困惑,因为没有“内置”uri,而且根据文档,您自己实现此类uri的目的似乎是向其他人提供文件,这不是我在这里要做的

在android实际禁止
文件://
uri之前,我所做的是使用ACTION\u GET\u内容和'file://'uri来处理大多数第三方文件管理器应用程序。所以如果有人知道7.0之后支持它的一些技巧,我也会很感激

Intent Intent=新的意图(Intent.ACTION\u OPEN\u文档);
intent.addCategory(intent.CATEGORY\u可打开);
Uri=Uri.parse(Environment.getExternalStorageDirectory()+“/myFolder/”;
intent.setType(“text/csv”);
DocumentFile file=DocumentFile.fromSingleUri(getApplicationContext(),uri);
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI,file.getUri());
intent.putExtra(“android.content.extra.SHOW_ADVANCED”,true);
intent.putExtra(“android.content.extra.FANCY”,true);
intent.putExtra(“android.content.extra.SHOW_FILESIZE”,true);
试一试{
startActivityForResult(意向,1);
}捕获(android.content.ActivityNotFoundException ex){
Toast.makeText(getApplicationContext(),“请安装文件管理器。”,Toast.LENGTH_SHORT).show();
}

这段代码只会转到“最近”文件夹,而不是我的文件夹。

试试看,它对我有用

Uri=Uri.parse(“content://com.android.externalstorage.documents/document/primary:Download");
意向意向=新意向(意向.行动\打开\文件);
intent.addCategory(intent.CATEGORY\u可打开);
intent.setType(“*/*”);
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI,URI);
startActivityForResult(意向,1);

注意:EXTRA_INITIAL_URI只支持Android 8及以上版本

试试看,它对我有用

Uri=Uri.parse(“content://com.android.externalstorage.documents/document/primary:Download");
意向意向=新意向(意向.行动\打开\文件);
intent.addCategory(intent.CATEGORY\u可打开);
intent.setType(“*/*”);
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI,URI);
startActivityForResult(意向,1);

注意:EXTRA_INITIAL_URI仅支持Android 8及以上版本

如果在Android 7或更早版本上使用EXTRA_INITIAL_URI会发生什么?它会崩溃还是只是没有打开正确的文件夹?如果在Android 7或更早版本上使用额外的初始URI会发生什么?它会崩溃还是只是没有打开正确的文件夹?