`Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("/"); // 指定文件类型,/ 表示所有文件类型 intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[] {"image/", "video/", "audio/", "text/"}); // 指定多种文件类型 intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); // 允许选择多个文件 startActivityForResult(intent, REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
if (data.getClipData() != null) { // 多个文件
int count = data.getClipData().getItemCount();
for (int i = 0; i < count; i++) {
Uri uri = data.getClipData().getItemAt(i).getUri();
// 处理选择的文件
}
} else { // 单个文件
Uri uri = data.getData();
// 处理选择的文件
}
}
}`
`public static String getUriAsString(Uri uri, Context context) { String scheme = uri.getScheme(); String path = uri.getPath(); String result;
if (ContentResolver.SCHEME_CONTENT.equals(scheme)) {
// 如果是 content:// 类型的 Uri,则使用 ContentResolver 解析
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
int index = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
if (index >= 0) {
result = cursor.getString(index);
} else {
result = path;
}
cursor.close();
} else {
result = path;
}
} else if (ContentResolver.SCHEME_FILE.equals(scheme)) {
// 如果是 file:// 类型的 Uri,则直接获取文件路径
result = path;
} else {
result = uri.toString();
}
return result;
} `
资料: