
我的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);}onActvityResult
@OverrIDepublic 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(); }}我非常感谢你对这个有任何帮助!最佳答案
Uri imageUri = data.getData(); //The trouble is here没有要求相机应用程序返回指向照片的Uri,因为这不是the ACTION_IMAGE_CAPTURE Intent protocol的一部分.要么:
>在ACTION_IMAGE_CAPTURE Intent中提供EXTRA_OUTPUT,在这种情况下,您知道应该存储图像的位置,并且不需要依赖getData(),或者
>在响应Intent中使用extra extra,它将是图像缩略图的Bitmap
你的下一个错误是:
String realPath = Image.getPath(this,imageUri);除非您通过EXTRA_OUTPUT提供指向该位置的路径,否则不要求将图像存储为您可以访问的文件. 总结
以上是内存溢出为你收集整理的对于某些手机,Android data.getData()从CameraActivity返回null全部内容,希望文章能够帮你解决对于某些手机,Android data.getData()从CameraActivity返回null所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)