Android相机意图返回null …有时

Android相机意图返回null …有时,第1张

概述参见英文答案>GettingUriNullincapturephotofromcameraintentinsamsungmobile                                    3个我在两个不同的物理设备上调试我的应用程序:>摩托罗拉MotoG,Android4.4.2>LGOPTIMUSL5II,Android4.

参见英文答案 > 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 …有时所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1096572.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存