我的摄像机活动返回的onActivityResult中发生了致命错误。我挠挠脑袋的是,错误只发生在少数手机上(基于受影响的用户数量),而大多数人似乎没有错。我可以在我的Nexus 6(运行Lollipop 5.1.1)上复制错误,而我的Note 5(也是5.1.1)完全没有问题。Android data.getData()从CameraActivity为某些手机返回null
问题是当我试图从data.getData()分配imageUri。在Note 5上调试时,data.mData等于“content:// media/external/images/media/2215”,而在Nexus 6上,data.mData为null。
我知道这是一个很常见的问题,但我至今没有找到任何帮助过我的东西。任何人都可以指出我的解决方案,并提供答案?对于结果
@OnClick(R.id.change_image_camera) public void takePicture(){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);}
方法启动摄像头活动
onActvityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
Uri imageUri = data.getData(); //The trouble is here
String realPath = Image.getPath(this, imageUri); //getPath crashes because imageUri is null
Image.compressImage(realPath);
File file = new File(realPath);
Bundle extra = new Bundle();
extra.putString("URL", realPath);
returnIntent.putExtras(extra);
setResult(RESULT_OK, returnIntent);
finish();
}
}
我非常感谢在这一个任何帮助!
感谢您的快速回复。我根据你的建议提供了EXTRA_OUTPUT,并完全避免了这些问题 –
@JohnRiggs:请注意,偶尔会出现一些错误的相机应用程序,它们都会忽略'EXTRA_OUTPUT' * *和*不会返回'Uri'。除了检测你没有得到你的照片并告诉用户获得一个真正的照相机应用程序,你可以做的不多。 :-) – CommonsWare