
参见英文答案 > Getting Uri Null in capture photo from camera intent in samsung mobile 3个
我在两个不同的物理设备上调试我的应用程序:
>摩托罗拉Moto G,AndroID 4.4.2
> LG OPTIMUS L5 II,AndroID 4.1.2
我在按钮中调用相机:
buttonCamera.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, REQUEST_IMAGE_CAPTURE); } });我像这样管理意图结果:
@OverrIDepublic voID onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESulT_OK) { Uri selectedImage = data.getData(); // <-- Sometimes null }这里的问题是,摩托罗拉Moto G中的data.getData()为空,但LG OPTIMUS中没有,为什么会这样?我怎样才能避免在摩托罗拉Moto G中获得null?
解决方法:
这个答案有点晚了,但我刚才遇到了同样的问题,我找到了一个解决方案:
private static final String STATE_file_URI = "state_file_uri";private static final int broWSE_CAMERA = 111;private String fileUri; @OverrIDe protected voID onSaveInstanceState(Bundle outState) { outState.putString(STATE_file_URI, fileUri); super.onSaveInstanceState(outState); } @OverrIDe protected voID onRestoreInstanceState(Bundle savedInstanceState) { fileUri = savedInstanceState.getString(STATE_file_URI); super.onRestoreInstanceState(savedInstanceState); } private voID takePictureIntent(){ Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); fileUri = "your_uri"; takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromfile(new file(fileUri))); startActivityForResult(takePictureIntent, broWSE_CAMERA); } @OverrIDe public voID onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESulT_OK) { if (requestCode == broWSE_CAMERA) { if (data == null) { onDeliveryPicture(Uri.parse("file://" + fileUri)); } else { onDeliveryPicture(data.getData()); } } } } private voID onDeliveryPicture(Uri uri) { ... }希望能帮助到你!
总结以上是内存溢出为你收集整理的Android相机意图返回null …有时全部内容,希望文章能够帮你解决Android相机意图返回null …有时所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)