Android 将图片添加到图库时出现NullPointerException

Android 将图片添加到图库时出现NullPointerException,android,gallery,Android,Gallery,错误: 致命异常:主 位于的java.lang.NullPointerException java.io.File.fixSlashes(File.java:185) 在java.io.File.(File.java:134) 在ua.romanpotapskiy.antihawk.prokaton.DeliverActivity.galleryAddPic(DeliverActivity.java:308) 在 ua.romanpotapskiy.antihawk.prokaton.Deliv

错误:

致命异常:主
位于的java.lang.NullPointerException java.io.File.fixSlashes(File.java:185)
在java.io.File.(File.java:134) 在ua.romanpotapskiy.antihawk.prokaton.DeliverActivity.galleryAddPic(DeliverActivity.java:308) 在 ua.romanpotapskiy.antihawk.prokaton.DeliverActivity.onClick(DeliverActivity.java:246) 在android.view.view.performClick(view.java:3511)
在android.view.view$PerformClick.run(view.java:14105)
位于android.os.Handler.handleCallback(Handler.java:605)
位于android.os.Handler.dispatchMessage(Handler.java:92)
在android.os.Looper.loop(Looper.java:137)
在android.app.ActivityThread.main(ActivityThread.java:4424)上
位于java.lang.reflect.Method.Invokenactive(本机方法)
在java.lang.reflect.Method.invoke(Method.java:511)
在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
在dalvik.system.NativeStart.main(本机方法)

代码:

此行出现错误: 文件f=新文件(mCurrentPhotoPath)


Android 4.0.3上的错误。在另一个版本中工作正常。

mCurrentPhotoPath在代码中为空,因此请提供完整的代码来检查此错误


image.getabsolutePath();在代码中为空。

根据您发布的代码,我猜您在调用
DispatchTakePictureContent()
之前遇到了错误,因为正是此方法调用了
createImageFile()
方法,该方法将
mCurrentPhotoPath
变量设置为非空值

一个简单的修复方法是使用如下的NOTNULL检查更新
galleryAddPic()
方法:

    private void galleryAddPic() {
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        if (mCurrentPhotoPath == null) {
            return;
        }
        File f = new File(mCurrentPhotoPath);
        Uri contentUri = Uri.fromFile(f);
        mediaScanIntent.setData(contentUri);
        this.sendBroadcast(mediaScanIntent);
    }

文件路径中的斜杠存在一些问题。错误清楚地表明,
mCurrentPhotoPath
为空,因此在调用
galleryAddPic()
方法之前,您需要为其分配一个非空值。正如我所说的,此代码在其他android版本上工作得非常好。我添加了您的“if”,现在代码捕获异常。好的,谢谢,但为什么image.getabsolutePath()为空?正如我所说,这段代码在其他android版本上运行得非常完美。但是在4.0.3上,我得到了错误。在4.0.3中,进程被更改为获取路径,这就是为什么它会变为null。如果你同意这个答案,那么请支持这个答案,查看这个答案以获取路径。呃,不能理解如何在我的项目中使用它:(参见这个示例,它将帮助你理解所有代码
    private void galleryAddPic() {
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        if (mCurrentPhotoPath == null) {
            return;
        }
        File f = new File(mCurrentPhotoPath);
        Uri contentUri = Uri.fromFile(f);
        mediaScanIntent.setData(contentUri);
        this.sendBroadcast(mediaScanIntent);
    }