【发布时间】:2015-09-04 17:07:33
【问题描述】:
我的 onActivityResult 从相机活动返回时发生致命错误。让我摸不着头脑的是,该错误仅发生在少数手机上(基于受影响用户的数量),而对大多数人来说似乎没有任何问题。我可以在我的 Nexus 6(运行 Lollipop 5.1.1)上复制错误,而我的 Note 5(也是 5.1.1)完全没有问题。
问题是当我尝试从 data.getData() 分配 imageUri 时。在 Note 5 上进行调试,data.mData 等于“content://media/external/images/media/2215”,而在 Nexus 6 上,data.mData 为空。
我知道这是在 SO 上提出的一个常见问题,但到目前为止我还没有找到任何对我有帮助的东西。谁能指出我的解决方案并提供答案?
方法为结果启动相机活动
@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();
}
}
非常感谢您对此提供的任何帮助!
【问题讨论】: