Android 打开相册获取多张图片Uri转真实路径

#Android 打开相册获取多张图片,代码我是这样写的。

final Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(Intent.createChooser(intent, "Add images"), 2);

#onActivityResult返回的Uri是这样的。

content://com.android.providers.media.documents/document/image%3A24699

#问题是:如何将这个Uri转成真实的路径?

要将Uri转换为真实路径,可以使用ContentResolver和Cursor来查询媒体库中的数据。下面是一个示例代码,可以将content://com.android.providers.media.documents/document/image转换为真实路径。



public String getRealPathFromUri(Context context, Uri uri) {
    String filePath = "";
    String[] projection = {MediaStore.Images.Media.DATA};
    Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
    if (cursor != null) {
        int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        if (cursor.moveToFirst()) {
            filePath = cursor.getString(columnIndex);
        }
        cursor.close();
    }
    return filePath;
}

你可以在onActivityResult方法中调用这个方法来获取真实路径。假设你的请求码是REQUEST_CODE,可以这样使用:



@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        Uri uri = data.getData();
        String realPath = getRealPathFromUri(this, uri);
        // 使用真实路径进行后续操作
    }
}

请注意,这个方法只适用于从媒体库中选择的图片。对于其他类型的Uri,可能需要使用不同的方法来获取真实路径。

看一下ContentResolver 和Cursor 吧
String path = null;
Uri uri = data.getData();
String[] proj = {MediaStore.Images.Media.DATA};
ContentResolver cr = this.getContentResolver();
Cursor cursor = cr.query(uri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
path = cursor.getString(column_index);

网上的方法有很多,找了几个你参考下吧
(1) android: Get real path from uri - Stack Overflow. https://stackoverflow.com/questions/26195731/android-get-real-path-from-uri
(2) string - Get Real Path For Uri Android - Stack Overflow. https://stackoverflow.com/questions/17546101/get-real-path-for-uri-android
(3) android10以上 uri转file uri转真实路径_android uri转file_红地毯前吃泡面的博客-CSDN博客. https://blog.csdn.net/jingzz1/article/details/106188462
(4) android - Get filename and path from URI from mediastore - Stack Overflow. https://stackoverflow.com/questions/3401579/get-filename-and-path-from-uri-from-mediastore