首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择图片时处理Android图片返回NullPointerException

选择图片时处理Android图片返回NullPointerException
EN

Stack Overflow用户
提问于 2014-05-19 13:44:23
回答 1查看 375关注 0票数 0

我有一个安卓应用程序与一个按钮,您可以选择图像。单击图像后,它将获取该值并将其传递到onActivityResult()

这行代码是不是总是得到一个错误NullPointerException

代码语言:javascript
复制
 Uri uri = data.getData();
 String path = FileUtil.getRealPath(this, uri);
 mPhotoUri = Uri.parse(path);

uri的值是content://com.android.providers.media.documents/document/image%3A319,为什么我会得到这个错误?

日志

代码语言:javascript
复制
05-19 16:20:18.679: E/galleryselector(13660): java.lang.NullPointerException: uriString
05-19 16:20:18.679: E/galleryselector(13660):   at android.net.Uri$StringUri.<init>(Uri.java:467)
05-19 16:20:18.679: E/galleryselector(13660):   at android.net.Uri$StringUri.<init>(Uri.java:457)
05-19 16:20:18.679: E/galleryselector(13660):   at android.net.Uri.parse(Uri.java:429)
05-19 16:20:18.679: E/galleryselector(13660):   at com.galleryselector.PostActivity.onActivityResult(PostActivity.java:253)
05-19 16:20:18.679: E/galleryselector(13660):   at android.app.Activity.dispatchActivityResult(Activity.java:5423)
05-19 16:20:18.679: E/galleryselector(13660):   at android.app.ActivityThread.deliverResults(ActivityThread.java:3361)
05-19 16:20:18.679: E/galleryselector(13660):   at android.app.ActivityThread.handleSendResult(ActivityThread.java:3408)
05-19 16:20:18.679: E/galleryselector(13660):   at android.app.ActivityThread.access$1300(ActivityThread.java:135)
05-19 16:20:18.679: E/galleryselector(13660):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)
05-19 16:20:18.679: E/galleryselector(13660):   at android.os.Handler.dispatchMessage(Handler.java:102)
05-19 16:20:18.679: E/galleryselector(13660):   at android.os.Looper.loop(Looper.java:136)
05-19 16:20:18.679: E/galleryselector(13660):   at android.app.ActivityThread.main(ActivityThread.java:5017)
05-19 16:20:18.679: E/galleryselector(13660):   at java.lang.reflect.Method.invokeNative(Native Method)
05-19 16:20:18.679: E/galleryselector(13660):   at java.lang.reflect.Method.invoke(Method.java:515)
05-19 16:20:18.679: E/galleryselector(13660):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-19 16:20:18.679: E/galleryselector(13660):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-19 16:20:18.679: E/galleryselector(13660):   at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126)
05-19 16:20:18.679: E/galleryselector(13660):   at dalvik.system.NativeStart.main(Native Method)

FileUtil类

代码语言:javascript
复制
  public static String getRealPath(Context context, Uri uri) {
    String[] projection = { MediaColumns.DATA };
    Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);

    cursor.moveToFirst();

    int columnIndex = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
    String path = cursor.getString(columnIndex);

    cursor.close();

    return path;
  }

这在我使用KITKAT进行调试时出现

EN

回答 1

Stack Overflow用户

发布于 2014-05-19 14:52:04

尝尝这个,

代码语言:javascript
复制
getAbsolutePath(data.getData()) + "|").split("\\|")


public String getAbsolutePath(Uri uri) {
        String[] projection = { MediaColumns.DATA };
        @SuppressWarnings("deprecation")
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        if (cursor != null) {
            int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        } else
            return null;
    }

这可能会对你有帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23730431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档