安卓-选择多种类型的文件

470 阅读1分钟

`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;

} `

资料:

通过Intent筛选多种类型文件