相机应用程序停止启动它的活动,MediaStore.EXTRA_OUTPUT为空?
问题描述:
我从我的活动相机应用程序停止启动它的活动,MediaStore.EXTRA_OUTPUT为空?
public void startCamera(View view) {
Log.i(TAG, "starting Camera action");
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
mImageCaptureUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
Log.d(TAG, "created media file uri is " + mImageCaptureUri);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
startActivityForResult(takePictureIntent, TAKE_PICTURE);
}
在onActivityResult启动相机应用的回调将这样
case TAKE_PICTURE:
if (resultCode == ActionActivity.RESULT_OK) {
Log.d(TAG, "received ok from camera intent, working on picture now. Saved image path is :" + mImageCaptureUri);
b = new Bundle();
if (mImageCaptureUri != null){
Intent i = new Intent();
b.putSerializable("picUri", mImageCaptureUri.getPath());
i.putExtras(b);
i.setClass(this, AttachCommentActivity.class);
startActivity(i);
}
else{
Log.e(TAG, "error while processing camera result, there is no picture uri, going back to previous view");
startActivity(new Intent().setClass(this, ActionActivity.class));
}
}
也许是第一次工作,但后来的变量mImageCaptureUri总是空处理。我可以在日志文件中看到活动在相机应用程序处于前台时停止,这就解释了为什么mImageCaptureUri为空。但是,我怎么能阻止呢?是否应该停止启动应用程序的活动?在我的测试设备,我使用的是Android 5.0
这里是日志输出
07-01 11:39:49.224 5614-5614/de.myapp I/AttachActivity﹕ starting Camera action
07-01 11:39:49.234 5614-5614/de.myapp D/AttachActivity﹕ created media file uri is file:///storage/emulated/0/Pictures/pdixattach/IMG_20150701_113949.jpg
07-01 11:39:49.264 5614-5614/de.myapp D/AttachActivity﹕ activity has been paused!
07-01 11:39:52.144 5614-5614/de.myapp D/AttachActivity﹕ activity has been stopped!
07-01 11:40:03.514 5614-5614/de.myapp E/ActivityThread﹕ Performing stop of activity that is not resumed: {de.myapp/de.myapp.activies.AttachActivity}
java.lang.RuntimeException: Performing stop of activity that is not resumed: {de.myapp/de.myapp.activies.AttachActivity}
at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3816)
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3904)
at android.app.ActivityThread.access$1200(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5938)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
07-01 11:40:02.984 5614-5614/de.myapp D/AttachActivity﹕ activity has been created!
07-01 11:40:03.014 5614-5614/de.myapp D/AttachActivity﹕ request code in onActivityResult is 100
07-01 11:40:03.014 5614-5614/de.myapp D/AttachActivity﹕ received ok from camera intent, working on picture now. Saved image path is :null
07-01 11:40:03.014 5614-5614/de.myapp E/AttachActivity﹕ error while processing camera result, there is no picture uri, going back to previous view
答
我可以在该activty已在相机应用中被停止是前景日志文件看,这就是解释了为什么mImageCaptureUri为空。
由于内存条件不足,您的进程正在终止。这在调用第三方相机应用程序时经常发生。
但是我该如何预防呢?
您无法阻止您的进程被终止。但是,您可以将Uri
放入Bundle
传入onSaveInstanceState()
中,并将恢复为onRestoreInstanceState()
。无论如何,你应该这样做,以处理屏幕旋转或其他配置更改。
+0
这是合理的,它的工作原理。谢谢 –
http://*.com/a/30977539/4447803试试这个链接它将工作在棒棒糖 – Mano
看看http://*.com/questions/29532914/android-intent-with-multiple-option -ie-pick-image-from-gallary-and-capture-im/29560548#29560548 –