Java 如果用户选择了一些随机的摄像头应用程序,如何正确处理android中的摄像头意图?

Java 如果用户选择了一些随机的摄像头应用程序,如何正确处理android中的摄像头意图?,java,android,kotlin,camera,android-camera-intent,Java,Android,Kotlin,Camera,Android Camera Intent,我正在做一个项目,在那里我使用一个相机来给用户拍照。代码是典型的,我创建了一个intent并给它一个输出文件的URI,在activityresult上,我得到了保存在给定URI中的图像,因此简化的代码如下所示: urioutputfileuri// 如果我们使用手机的默认摄像头应用程序,这会很好地工作 它可能适用于您测试的数以万计的现有设备型号中的少数设备。预装摄像头应用程序和第三方应用程序一样可能存在漏洞,而且多年来,包括您为PicsArt引用的应用程序 如果用户选择不同的摄像头应用程序(在本

我正在做一个项目,在那里我使用一个相机来给用户拍照。代码是典型的,我创建了一个intent并给它一个输出文件的URI,在activityresult上,我得到了保存在给定URI中的图像,因此简化的代码如下所示:

urioutputfileuri//
如果我们使用手机的默认摄像头应用程序,这会很好地工作

它可能适用于您测试的数以万计的现有设备型号中的少数设备。预装摄像头应用程序和第三方应用程序一样可能存在漏洞,而且多年来,包括您为PicsArt引用的应用程序

如果用户选择不同的摄像头应用程序(在本例中,用户选择的是PicsArt应用程序),则此操作无效。即,picsArt应用程序未将图像保存在uri中

向PicsArt提交一个bug。但是,同样,不要假设“默认相机应用程序”意味着“始终工作”,也不要假设“不同的相机应用程序”意味着“从不工作”

那么,解决这个问题的正确方法是什么

这很可能是你的经理们的问题。基本上,您有两个主要选择:

>P>告诉用户“对不起,但你使用的相机应用程序与其他应用程序不太好-请考虑X”,X是你测试过的一些相机应用程序的名称,相信可能是可靠的。例如,我倾向于使用Open Camera作为我的参考应用程序

  • 不要依赖于
    操作\u图像\u捕获
    ,而是直接从应用程序中拍照,例如使用您提到的CameraX。好的一面是,你完全可以控制。不利的一面是,这需要做更多的工作,而相机硬件兼容性也带来了自己的一系列难题


  • 就我个人而言,我的建议是,你的应用程序能够拍照有多重要。如果没有这些照片,应用程序是无用的,直接从应用程序中拍摄照片,并为初始开发和持续维护预算工程和质量保证时间。如果该应用程序可以在没有照片的情况下使用,我将继续使用
    操作\u图像\u捕获
    ,如果用户选择的相机应用程序工作不正常,我只会“优雅地降级”。

    picsArt应用程序没有将图像保存在uri中但它是否将其保存在文件中的某个位置?请调查。同时调查收到意向书中的整套捆绑包。看看它提供了哪些信息。如果你是幸运数据。getData()是uri。是的,如果我打开手机的默认多媒体资料,它会显示照片。照片保存在picsArt的内部存储器中。谢谢你的建议,我会检查
    data.getData()