要获取从“打开文档树”意图中选择的存储位置的路径,可以使用以下代码示例:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == PICK_DOC_REQUEST && resultCode == RESULT_OK && intent.getData() != null) {
Uri uriTree = intent.getData();
// Check for the "DocumentProvider" authority
if (DocumentsContract.isDocumentUri(this, uriTree)) {
// The document provider was selected
String docId = DocumentsContract.getTreeDocumentId(uriTree);
// Get complete Uri of this document by adding document id to the tree Uri
Uri uri = DocumentsContract.buildDocumentUriUsingTree(uriTree, docId);
// Get details about the selected directory, including its document id and display name
String [] projection = {DocumentsContract.Document.COLUMN_DOCUMENT_ID,
DocumentsContract.Document.COLUMN_DISPLAY_NAME};
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
String folderDocumentId = cursor.getString(0);
String folderName = cursor.getString(1);
// Use folderDocumentId and folderName
Log.d(TAG, "Folder Document Id: " + folderDocumentId);
Log.d(TAG, "Folder Name: " + folderName);
}
if (cursor != null) {
cursor.close();
}
}
} else {
super.onActivityResult(requestCode, resultCode, intent);
}
}
其中, PICK_DOC_REQUEST
是一个用于标识请求代码的整数常量,应该在启动 ACTION_OPEN_DOCUMENT_TREE
意图时使用。
此代码将检查获取的 Uri
是否属于“文件提供者”,获取所选目录的详细信息,并从中提取必要的信息。此时,您可以使用 folderDocumentId
来获取完整的 Uri
并进行其他操作。
上一篇:AndroidStudio:如果我在软键盘上点击Enter键,它会跳转到一个Fragment或Activity。
下一篇:AndroidStudio:如何从一个活动中获取用户输入(来自Spinner和EditText)并传递到另一个活动?