开发者

Null pointer exception using camera intent when getData called

I am using this tutorial / code to learn the camera functions: cam tutorial.

The app is crashing after the camera Intent takes the picture and returns to onActivityResult. But I am checking the make sure data is not null:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
System.out.println("***** inside onActivityResult");

  if (requestCode == TAKE_PICTURE) {
    if (data != null) {
    System.out.println("***** inside data !=null if");

      imageid = data.getData().getLastPathSegment(); //returns full pic id
      System.out.println("***** imageid:" + imageid);
[...]

I get inside the data != null if statement and it crashes when I imageid = data.getData().getLastPathSegment();.

Logcat:

01-20 12:45:02.678: ERROR/AndroidRuntime(1626): FATAL EXCEPTION: main 01-20 12:45:02.678: ERROR/AndroidRuntime(1626): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=inline开发者_如何学运维-data (has extras) }} to activity {org.kimile/org.kimile.Camera}: java.lang.NullPointerException 01-20 12:45:02.678: ERROR/AndroidRuntime(1626): at android.app.ActivityThread.deliverResults(ActivityThread.java:3515) 01-20 12:45:02.678: ERROR/AndroidRuntime(1626): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3557) 01-20 12:45:02.678: ERROR/AndroidRuntime(1626): at android.app.ActivityThread.access$2800(ActivityThread.java:125) 01-20 12:45:02.678: ERROR/AndroidRuntime(1626): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2063)

I can't figure out why its throwing the null exception even know I am checking to make sure its not null.


Your code is throwing a NullPointerException because the object returned from data.getData() is null. Thus when you call getData().getLastPathSegment(), the method getLastPathSegment() is being called on a null object - giving you your NPE.

Like willytate said, if you want to avoid the problem all together make sure you check the value of resultCode. Otherwise, make sure you check if getData() is null as well.


Well, if data is not null, data.getData() can still be null, and you can't call getLastPathSegment() on null. Maybe check that first, and if that's the case, maybe as @willytate commented, there is something wrong with the returned data?


Check for the resultCode and requestCode avoiding them if null
if (resultCode == RESULT_OK && data != null)


On returning after capturing image using camera intent sometimes it does not returns us data so that you have to use

        Bundle extras = data.getExtras();

            Bitmap imageBitmap = (Bitmap) extras.get(TAG_data);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜