-->

妥善解决挑/点击Android的图像(Proper solution to pick/click a

2019-09-29 20:06发布

正如标题所暗示的,我必须在我的应用程序上传图片的选项。 我想有两个选择:点击一个新的图片及从库中选择。 画廊选择正在使用该代码的所有设备罚款:

Intent in = new Intent();
in.setType("image/*");
in.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(in, getString(R.string.selectpicture)), 100);

问题是Click a new picture

我想用安装在设备上的其他相机应用来获取图像。 此代码应在指定的路径保存图像用户点击。

Intent m_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imageUri = getImageUri();
m_intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(m_intent, REQUEST_IMAGE_CAPTURE);

但是,什么情况是,该EXTRA_OUTPUT不是所有的相机应用程序的尊重。

此外,如果内存不足,我的应用程序是由这使得事情更加复杂的系统中丧生。

那么,什么是让用户单击一个新的画面,让我的应用程序图像路径的最佳方式? 如果使用第三方库比较好,哪一个的是可靠的?

Answer 1:

该EXTRA_OUTPUT不是所有的相机应用程序的尊重。

您委派任何一个第三方应用程序的任何时候,你会遇到的问题。

此外,如果内存不足,我的应用程序是由这使得事情更加复杂的系统中丧生。

你总有需要处理这个问题。 保存你把价值EXTRA_OUTPUT在保存实例状态Bundle

什么是使用户点击一个新的画面,让我的应用程序图像路径的最佳方式?

如果你想坚持ACTION_IMAGE_CAPTURE ,我想这个分流走:

  • 如果在你所提供的位置的图像EXTRA_OUTPUT ,用它

  • 如果不是,和getData()Intent在给你onActivityResult()返回一个Uri (而不是null ),使用(如果你确实需要一个File ,使用ContentResolveropenInputStream()Uri和复制内容进入自己的文件)

  • 如果两者都不是真实的, getParcelableExtra("data")返回一个值,即保存Bitmap到一个文件

  • 如果这些都不是真实的,建议用户得到不同的相机应用,也许他们指向一个你已经尝试过,知道作品

或者,你自己拍照,直接或使用像一个图书馆矿 。



文章来源: Proper solution to pick/click an image on Android