2013-08-08 2 views
3

Кто может помочь мне просмотреть эту ошибку, В моей деятельности я начинаю АктивациюForResult (используемая камера для съемки). После того, как вы сделали фотографию, моя деятельность не может возобновиться. :(Невозможно возобновить работу, сбой приложения после использования камеры

java.lang.RuntimeException: Unable to resume activity {com.example/com.example.view.main.PersonActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=998, result=-1, data=null} to activity {com.example/com.example.view.main.PersonActivity}: java.lang.NullPointerException 

--------- Stack trace --------- 

    android.app.ActivityThread.performResumeActivity(ActivityThread.java:2458) 
    android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2486) 
    android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2000) 
    android.app.ActivityThread.access$600(ActivityThread.java:128) 
    android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161) 
    android.os.Handler.dispatchMessage(Handler.java:99) 
    android.os.Looper.loop(Looper.java:137) 
    android.app.ActivityThread.main(ActivityThread.java:4514) 
    java.lang.reflect.Method.invokeNative(Native Method) 
    java.lang.reflect.Method.invoke(Method.java:511) 
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
    com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
    dalvik.system.NativeStart.main(Native Method) 
------------------------------- 

--------- Cause --------- 

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=998, result=-1, data=null} to activity {com.example/com.example.view.main.PersonActivity}: java.lang.NullPointerException 

    android.app.ActivityThread.deliverResults(ActivityThread.java:2994) 
    android.app.ActivityThread.performResumeActivity(ActivityThread.java:2445) 
    android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2486) 
    android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2000) 
    android.app.ActivityThread.access$600(ActivityThread.java:128) 
    android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161) 
    android.os.Handler.dispatchMessage(Handler.java:99) 
    android.os.Looper.loop(Looper.java:137) 
    android.app.ActivityThread.main(ActivityThread.java:4514) 
    java.lang.reflect.Method.invokeNative(Native Method) 
    java.lang.reflect.Method.invoke(Method.java:511) 
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
    com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
    dalvik.system.NativeStart.main(Native Method) 
------------------------------- 

В моей Java-кода, в OnActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    String filePath = ""; 
    switch (requestCode) { 
    case MyActivity.RQ_SALE_TAKE_PHOTO: 
     { 
      if (resultCode == RESULT_OK) { 
       if (data != null && data.getExtras() != null && data.getAction() != null) { 
        Bitmap tempBitmap = null; 
        tempBitmap = (Bitmap) data.getExtras().get("data"); 
        //..... 
       } 
      } else { 
       //DO SOMETHING HERE 
      } 
     } 
     break; 
    } 
} 

камеры Код вызова:

public static File takePhoto(Activity sender, int requestCode) { 
    System.gc(); 
    final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    String fileName = Constants.TEMP_IMG + "_" + DateUtils.getCurrentDateTimeWithFormat(null) + ".jpg"; 
    File retFile = new File(ExternalStorage.getTakenPhotoPath(sender), fileName); 
    if (!retFile.exists()) 
     try { 
      retFile.createNewFile(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(retFile)); 
    sender.startActivityForResult(intent, requestCode); 
    return retFile; 
} 

Может кто-нибудь помочь мне объяснить выше ошибки, и как это исправить

+0

Не могли бы вы поместить код, который вы вызываете? –

+0

Я добавил выше ... –

ответ

3

Похож возвратное намерение «data» является нулевым

Убедитесь, что вы используете startActivityForResult и приложение камеры по умолчанию.

Приложение камеры Android по умолчанию возвращает ненулевое намерение только при передаче эскиза в возвращаемом намерении. Если вы передаете EXTRA_OUTPUT с URL, чтобы написать на, он будет возвращать нулевое намерение и фотографии находится в URL, который вы прошли в

+0

Привет, Arun C Thomas, данные, которые я проверил. –

+0

просто удалите aim.putExtra (MediaStore.EXTRA_OUTPUT, Uri.fromFile (retFile)); –

+0

Привет, Арун, с моим «данным» «null», и я получил изображение с URL-адреса после того, как вы сделали фотографию. Но эта ошибка не нашла никакого строкового кода в моем проекте –

0

Просто сделайте startActivity. Когда вы начинаете startActivityForResult, из другой запущенной активности вам нужно установитьResult () к вашей деятельности.

Теперь активность камеры не создает для вас никакого результата, и она срабатывает в функции onActivityResult.

+0

Извините Sushil, Обычно он все равно будет работать, эта ошибка встречается очень редко –

0

попробовать это ..

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(cameraIntent, requestCode); 
+0

это как мой код используется –

0

Попробуйте этот код.

try { 
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
    File photo = new File(photoPath); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); 
    startActivityForResult(Intent.createChooser(intent, "Capture Image"), 
          MyActivity.RQ_SALE_TAKE_PHOTO); 
} catch (Exception e) { 
} 
+0

Привет, Ренан, похоже, мой код –

+0

Ваши намерения разные. –

+0

:) Обычно это будет работать, эта ошибка встречается очень редко. Не могли бы вы объяснить мне, почему нужно менять «намерение». Спасибо Ренану! –

Смежные вопросы