我正在从我的活动中启动相机应用程序
<script type="text/javascript" src="assets/app.js"></script>:
在onActivityResult中,回调将像这样处理
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);
}
也许第一次它起作用但之后变量mImageCaptureUri总是为空。我可以在日志文件中看到在相机应用程序处于前台期间已停止激活,这就解释了为什么mImageCaptureUri为空。但是我该如何防止这种情况呢?是否应该停止启动应用程序的活动的程序?在我的测试设备上我使用的是Android 5.0
这是日志输出
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));
}
}
答案 0 :(得分:1)
我可以在日志文件中看到在相机应用程序处于前台期间已停止激活,这就解释了为什么mImageCaptureUri为空。
由于内存不足,您的进程正在终止。这在调用第三方相机应用程序时经常发生。
但我怎么能阻止这个?
您无法阻止您的流程被终止。但是,您可以将Uri
放入传递到Bundle
的{{1}}并恢复onSaveInstanceState()
中的Uri
。无论如何,您应该这样做,以处理屏幕旋转或其他配置更改。