java–Android KitKat图像选择不返回任何内容

java–Android KitKat图像选择不返回任何内容,第1张

概述我一直试图获得在KitKat画廊中选择图像的绝对图像路径,但它似乎没有成功.无论我做什么,我的变量IMAGE_FILEPATH总是“”.这是我的onActivityResult()的代码@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){super.onActivityRe

我一直试图获得在KitKat画廊中选择的图像的绝对图像路径,但它似乎没有成功.无论我做什么,我的变量IMAGE_filePATH总是“”.这是我的onActivityResult()的代码

@OverrIDeprotected voID onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    if (resultCode != Activity.RESulT_OK) return;    if (null == data) return;    Uri originalUri = null;    if (requestCode == 1) {        //JB!!!            Uri uri = data.getData();            if (uri != null) {                try {                    // User had pick an image.                    String[] filePathColumn = { MediaStore.Images.Media.DATA };                    Cursor cursor = getContentResolver()                            .query(uri,                                    filePathColumn, null, null, null);                    cursor.movetoFirst();                    IMAGE_filePATH = cursor.getString(0);                    cursor.close();                } catch (Exception e) {                    Crouton.makeText(this, "Failed to get image", Style.ALERT).show();                }            }    } else if (requestCode == 2) {        //KK!!!            Uri uri = data.getData();            if (uri != null) {                try {                    if( uri == null ) {                        IMAGE_filePATH = uri.getPath();                    } else {                        String[] projection = { MediaStore.Images.Media.DATA };                        Cursor cursor = managedquery(uri, projection, null, null, null);                        if( cursor != null ){                            int column_index = cursor                                    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);                            cursor.movetoFirst();                            IMAGE_filePATH =  cursor.getString(column_index);                        } else {                            IMAGE_filePATH = uri.getPath();                        }                    }                } catch (Exception e) {                    Crouton.makeText(this, "Failed to get image", Style.ALERT).show();                }            }    }    Resource.toast(IMAGE_filePATH);    super.onActivityResult(requestCode, resultCode, data);}

出了什么问题?我尝试了多种解决方案,但似乎没有任何效果.

解决方法:

在KitKat中,gallery返回如下URI:content://com.androID.provIDers.media.documents/document/image:1

代替 :

content://media/external/images/media/1

那么,这里是您可以在KK下编写的内容,使其有效:

if (uri != null) {    try {        if( uri == null ) {            IMAGE_filePATH = uri.getPath();        } else {            // get the ID of the image selected by the user            String wholeID = documentsContract.getdocumentID(data.getData());            String ID = wholeID.split(":")[1];            String[] projection = { MediaStore.Images.Media.DATA };            String whereClause = MediaStore.Images.Media._ID + "=?";            Cursor cursor = getContentResolver().query(getUri(), projection, whereClause, new String[]{ID}, null);            if( cursor != null ){                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);                if (cursor.movetoFirst()) {                    IMAGE_filePATH = cursor.getString(column_index);                }                cursor.close();            } else {                IMAGE_filePATH = uri.getPath();            }        }    } catch (Exception e) {        Crouton.makeText(this, "Failed to get image", Style.ALERT).show();    }}

我使用的功能:

private Uri getUri() {    String state = Environment.getExternalStorageState();    if(!state.equalsIgnoreCase(Environment.MEDIA_MOUNTED)) {        return MediaStore.Images.Media.INTERNAL_CONTENT_URI;    }    return MediaStore.Images.Media.EXTERNAL_CONTENT_URI;}

这些帖子帮助了我:retrieve absolute path when select image from gallery kitkat android和Get real path from URI, Android KitKat new storage access framework

总结

以上是内存溢出为你收集整理的java – Android KitKat图像选择不返回任何内容全部内容,希望文章能够帮你解决java – Android KitKat图像选择不返回任何内容所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1115678.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存