【问题标题】:Android : Get photo from gallery always returns bitmap not uriAndroid:从图库中获取照片总是返回位图而不是 uri
【发布时间】:2017-03-30 22:37:35
【问题描述】:

我打电话:

Intent intent = new Intent(Intent.ACTION_PICK,
                MediaStore.Images.Media.INTERNAL_CONTENT_URI);
        intent.setType("image/*");
        intent.putExtra("crop", "true");
        intent.putExtra("scale", true);
        intent.putExtra("outputX", 256);
        intent.putExtra("outputY", 256);
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        intent.putExtra("return-data", true);

startActivityForResult(intent, code);

然后在我的 ActiviyResult() 中:

if (requestCode == RESULT_LOAD_IMAGE && data != null) {

                final Bundle extras = data.getExtras();
                if (extras != null) {
                //Get image
                Bitmap profilePicBitmap = extras.getParcelable("data");
                  ...

我尝试通过这样做来获取 uri:

data.getData()

但它总是返回 null

问题是我需要设备上位图的路径,以便我可以将其上传到其他地方...但我无法获得它的路径而无需将其转换为 uri。要转换为 uri,您必须请求写入外部存储的权限,请参阅此处:(http://stackoverflow.com/questions/12555420/how-to-get-a-uri-object-from-bitmap),我想避免这种情况。

【问题讨论】:

    标签: android uri android-bitmap android-gallery


    【解决方案1】:

    但它总是返回 null

    该行为取决于设备及其应用。

    我怀疑,如果您摆脱了那些无证的临时演员,您将会有更好的运气。据推测,您不是使用图像裁剪库,而是尝试让ACTION_PICK 活动进行裁剪。这样做有两个问题:

    1. ACTION_PICK 活动不需要进行任何裁剪,因为这些额外功能不属于 Android SDK。

    2. 我的猜测是,由于裁剪后的图像不作为文件存在,他们通过 "data" 额外返回它(这也在 ACTION_PICK 的记录行为之外)

    所以,摆脱那些额外的东西。如果要裁剪图像,use an image-cropping library

    【讨论】:

      猜你喜欢
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 2011-10-19
      • 2015-11-27
      • 1970-01-01
      相关资源
      最近更新 更多