2015-07-01 24 views
0

我从我的活动相机应用程序停止启动它的活动,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 
+0

http://stackoverflow.com/a/30977539/4447803试试这个链接它将工作在棒棒糖 – Mano

+0

看看http://stackoverflow.com/questions/29532914/android-intent-with-multiple-option -ie-pick-image-from-gallary-and-capture-im/29560548#29560548 –

回答

1

我可以在该activty已在相机应用中被停止是前景日志文件看,这就是解释了为什么mImageCaptureUri为空。

由于内存条件不足,您的进程正在终止。这在调用第三方相机应用程序时经常发生。

但是我该如何预防呢?

您无法阻止您的进程被终止。但是,您可以将Uri放入Bundle传入onSaveInstanceState()中,并将恢复为onRestoreInstanceState()。无论如何,你应该这样做,以处理屏幕旋转或其他配置更改。

+0

这是合理的,它的工作原理。谢谢 –

相关问题