Android 如何解决kitkat和其他版本的图库中任何照片的路径问题?

Android 如何解决kitkat和其他版本的图库中任何照片的路径问题?,android,android-gallery,Android,Android Gallery,我使用这个onActivityResult方法从图库或相机中获取照片 及其获取路径的方法 错误是 这给了我kitkat和其他版本中的路径错误。你能解决这个问题吗?我们将感谢您的帮助 请尝试以下代码: if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && null != data) { Uri selectedImage = data.getData()

我使用这个onActivityResult方法从图库或相机中获取照片

及其获取路径的方法

错误是

这给了我kitkat和其他版本中的路径错误。你能解决这个问题吗?我们将感谢您的帮助


请尝试以下代码:

if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && null != data) {
                Uri selectedImage = data.getData();
                String[] filePathColumn = { MediaStore.Images.Media.DATA };

                Cursor cursor = getContentResolver().query(selectedImage,
                        filePathColumn, null, null, null);
                String imgDecodableString;
                if(cursor==null) {
                    imgDecodableString= selectedImage.getPath();
                }
                else {
                    cursor.moveToFirst();
                    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                    imgDecodableString = cursor.getString(columnIndex);
                    cursor.close();
                }
}
imgdecodablesting
将包含图像的最终路径,您可以在ImageView中将图像设置为:

theftimage.setImageBitmap(BitmapFactory.decodeFile(imgDecodableString));

如果您只想将所选文件放在ImageView中,则不需要路径

一条语句适用于所有Android版本:

theftimage.setImageBitmap(BitmapFactory.decodeStream(
    getContentResolver().openInputStream(data.getData())));

你为什么要惹麻烦?具有内置文件路径函数的Uri类。uri.getPath()。那是。它将返回文件的路径。thnx!!!它工作得很好,听起来很棒。。快乐编码。
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && null != data) {
                Uri selectedImage = data.getData();
                String[] filePathColumn = { MediaStore.Images.Media.DATA };

                Cursor cursor = getContentResolver().query(selectedImage,
                        filePathColumn, null, null, null);
                String imgDecodableString;
                if(cursor==null) {
                    imgDecodableString= selectedImage.getPath();
                }
                else {
                    cursor.moveToFirst();
                    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                    imgDecodableString = cursor.getString(columnIndex);
                    cursor.close();
                }
}
theftimage.setImageBitmap(BitmapFactory.decodeFile(imgDecodableString));
theftimage.setImageBitmap(BitmapFactory.decodeStream(
    getContentResolver().openInputStream(data.getData())));