Невозможно возобновить активность, сбой приложения после использования камеры
Кто может помочь мне рассмотреть эту ошибку, В своей деятельности я запускаю ActiveForResult (камера использовалась для получения изображения). После того, как я сделал фотографию, моя деятельность не может возобновиться.:(
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;
}
Может кто-нибудь помочь мне объяснить вышеуказанную ошибку, и как исправить эту ошибку.
4 ответа
Похоже, возвращение намеренияdata
" нулевой
Убедитесь, что вы используете startActivityForResult
и приложение камеры по умолчанию.
Приложение камеры Android по умолчанию возвращает ненулевое намерение только при передаче миниатюры в возвращенном Намерении. Если вы передадите EXTRA_OUTPUT с URL-адресом для записи, он вернет нулевое намерение, и изображения будут в URL-адресе, который вы передали.
Просто сделайте startActivity. Когда вы выполняете startActivityForResult, из другой запущенной активности вам нужно установить Result() для вашей активности.
Теперь активность камеры не устанавливает для вас никакого результата, и она вылетает в функции onActivityResult.
Попробуйте этот код:
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) {
}
Попробуй это..
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, requestCode);