我通过参数MediaStore.EXTRA_OUTPUT.Camera打开我的应用程序从我的应用程序打开相机活动,但是当我没有点击图像我没有点击我的应用程序崩溃。我经历了类似的问题,发现当MediaStore.EXTRA_OUTPUT是相机时,相机意图返回null used.So我如何检查图像是否被点击?
这是代码:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri camCapfileUri = Uri.fromFile(new File(camCaptureImageName));
intent.putExtra(MediaStore.EXTRA_OUTPUT, camCapfileUri);
activity.startActivityForResult(intent, reqCode);
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//Changes camera on backpressed with data null checked
if (requestCode == REQUEST_CAMERA) {
onCaptureImageResult();
} else if (requestCode == PICK_FROM_GALLERY && data.getData() != null) {
onSelectFromGalleryResult(data);
}
}
当我检查(数据!= null)相机时,它在某些手机中运行良好,并在其他手机中崩溃。那么在这种情况下如何处理背压。
答案 0 :(得分:0)
当您设置MediaStore.EXTRA_OUTPUT
标记时,data
总是为空(我认为Android> = 5.0)。
实现它的正确方法是维护File的一个实例,该实例用作标志中MediaStore.EXTRA_OUTPUT
键的值。
然后在单击图像并获得RESULT_OK
后,检查文件是否存在。
请注意:File
对象可能在null
内onActivityResult()
。这是因为从Camera Activity返回时重新创建了Activity。要解决此问题,您需要将文件的路径保存到onSaveInstanceState()
中的outState Bundle,并在onRestoreInstanceState()
内重新初始化。
答案 1 :(得分:0)
我不确定我是否正确理解您的问题,但您可以检查结果是否正常。我稍微修改了你的代码。
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri camCapfileUri = Uri.fromFile(new File(camCaptureImageName));
intent.putExtra(MediaStore.EXTRA_OUTPUT, camCapfileUri);
activity.startActivityForResult(intent, reqCode);
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//Changes camera on backpressed with data null checked
// if user press back result will not be RESULT_OK
if(resultCode == Activity.RESULT_OK){
if (requestCode == REQUEST_CAMERA) {
onCaptureImageResult();
} else if (requestCode == PICK_FROM_GALLERY && data.getData() != null) {
onSelectFromGalleryResult(data);
}
}
}
我希望这会帮助你。