android 10 U 盘的根目录 ID
时间: 2024-03-17 13:44:17 浏览: 87
在 Android 10 上,U 盘的根目录 ID 可以通过 MediaStore API 获取。具体的代码实现可以参考下面的示例:
```java
// 查询 U 盘根目录的 MediaStore ID
String[] projection = new String[] {MediaStore.Files.FileColumns._ID};
String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
+ MediaStore.Files.FileColumns.MEDIA_TYPE_NONE
+ " AND " + MediaStore.Files.FileColumns.DISPLAY_NAME + "=''"
+ " AND " + MediaStore.Files.FileColumns.TITLE + "=''";
Cursor cursor = getContentResolver().query(MediaStore.Files.getContentUri("external"), projection, selection, null, null);
if (cursor != null && cursor.moveToFirst()) {
String rootId = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns._ID));
cursor.close();
// 构建指向 U 盘根目录的 URI
Uri uri = DocumentsContract.buildDocumentUri("com.android.externalstorage.documents", rootId);
// 启动文件管理器并默认显示 U 盘界面
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "resource/folder");
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, uri);
startActivity(intent);
}
```
这个示例代码中,我们首先使用 MediaStore API 查询 U 盘根目录的 MediaStore ID,然后使用 `DocumentsContract.buildDocumentUri()` 方法构建指向 U 盘根目录的 URI。最后,我们将这个 URI 传递给文件管理器,并使用 `putExtra()` 方法将 URI 传递给文件管理器的 `EXTRA_INITIAL_URI` 参数,以便让文件管理器默认显示 U 盘界面。注意,这个示例代码中的 `com.android.externalstorage.documents` 是 U 盘根目录的默认权限授权者(authority),如果你的设备支持多个权限授权者,你需要将 `com.android.externalstorage.documents` 替换为适当的权限授权者。
阅读全文