我的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为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);}
Run Code Online (Sandbox Code Playgroud)
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();
}
}
Run Code Online (Sandbox Code Playgroud)
我非常感谢你对这个有任何帮助!
Uri imageUri = data.getData(); //The trouble is here
Run Code Online (Sandbox Code Playgroud)
有一个摄像头应用程序来一回没有要求Uri指向照片,因为这不是一部分的ACTION_IMAGE_CAPTURE Intent协议。任何一个:
供应EXTRA_OUTPUT在你的ACTION_IMAGE_CAPTURE Intent,在这种情况下,你知道哪里有图像应被存储,并且不需要依赖getData(),或
data在响应中使用额外的Intent,这将是Bitmap图像的缩略图
你的下一个错误在这里:
String realPath = Image.getPath(this, imageUri);
Run Code Online (Sandbox Code Playgroud)
不需要将图像存储为您可以访问的文件,除非您通过EXTRA_OUTPUT.
| 归档时间: |
|
| 查看次数: |
4317 次 |
| 最近记录: |