【发布时间】:2021-04-01 12:10:46
【问题描述】:
我正在开展一个项目,我正在使用相机意图为用户拍照。代码是典型的,我创建了一个意图并给它输出文件的 URI,和 onActivityResult,我得到保存在给定 uri 中的图像,所以简化的代码看起来像这样:
Uri outputFileURI; //<-- this is where the output picture should be
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileURI);
startActivityForResult(takePictureIntent, MY_CAMERA_REQUEST_CODE);
然后,
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_CAMERA_REQUEST_CODE && resultCode == RESULT_OK) {
outputFileURI; // <-- the image is saved in this uri by the camera
// do something with the uri
}
如果我们使用手机的默认相机应用,这会很好地工作。
问题
如果用户选择不同的相机应用程序(在这种情况下,用户选择PicsArt 应用程序),这不起作用。即,picsArt 应用程序没有将图像保存在 uri 中。用户可以选择任意相机应用程序,那么解决此问题的正确方法是什么?是否可以限制用户仅使用默认相机应用程序?还是我应该使用CameraX 或类似的东西?
【问题讨论】:
-
the picsArt app is not saving the image in the uri.但它是否将其保存在文件中的某个位置?请调查。 -
还调查接收到的意图中的整套捆绑包。看看它提供了哪些信息。如果幸运的话 data.getData() 是 uri。
-
是的,如果我打开手机的默认图库,它会显示照片。照片保存在 picsArt 的内部存储中。感谢您的建议,我会检查
data.getData()
标签: java android kotlin camera android-camera-intent