无法从Google相册应用中选择图片

时间:2018-07-13 17:23:58

标签: android android-intent kotlin google-photos

我正在使用以下代码(在Kotlin中)从三星平板电脑上的Google相册应用中选择图片。

val intent =  Intent (Intent.ACTION_GET_CONTENT)
intent.type = "image/*"
startActivityForResult(intent, REQUEST_GOOGLE_PHOTOS_IMAGE)

我也尝试过

Intent (Intent.ACTION_GET_CONTENT,MediaStore.Images.Media.EXTERNAL_CONTENT_URI)

运行此代码后,我将获得一个幻灯片,可以选择“照片”应用,然后从中选择照片。但是,一旦我选择了照片,该应用程序就不会像使用相机和图库那样将图像返回给我的应用程序。相反,它返回到幻灯片。当我按下“后退”按钮以关闭幻灯片时,将使用RESULT_CANCELED和0数据调用onActivityResult。

我能够从图库和相机中检索照片而不会出现问题,所以我不确定自己缺少什么。也许是清单中的许可或其他?预先感谢!

3 个答案:

答案 0 :(得分:0)

让我们这样尝试吧

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        } else {
            intent = new Intent(Intent.ACTION_GET_CONTENT);
        }

答案 1 :(得分:0)

使用 ACTION_GET_CONTENT 意图操作-Intent.ACTION_GET_CONTENT

调用以下selectImage()方法以开始选择图像意图,它将显示所有可用于选择图像的应用程序

private val RC_SELECT_IMGAE = 101

private fun selectImage() {
    val selectImageIntent = Intent(Intent.ACTION_GET_CONTENT, MediaStore.Images.Media
            .EXTERNAL_CONTENT_URI)
    startActivityForResult(selectImageIntent, RC_SELECT_IMGAE)
}

然后通过覆盖活动

中的onActivityResult()方法来处理回调
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    when (requestCode) {
        RC_SELECT_IMGAE -> {
            if (data != null) {
                val uri = data.data
                displaySelectedImage(getBitmapFromUri(uri))
            }
        }
        else -> super.onActivityResult(requestCode, resultCode, data)
    }
}

最后使用以下位图更新图像视图

private fun getBitmapFromUri(uri: Uri): Bitmap {
    val parcelFileDescriptor = contentResolver.openFileDescriptor(uri, "r")
    val fileDescriptor = parcelFileDescriptor?.fileDescriptor
    val image = BitmapFactory.decodeFileDescriptor(fileDescriptor)
    parcelFileDescriptor.close()
    return image
}

private fun displaySelectedImage(imageBitmap: Bitmap) {
    iv_selected_image.setImageBitmap(imageBitmap)
}

在此处查找工作图像选择器示例-ImagePickerExample

您可能想添加FileProvider,以防其带来任何形式的URI异常

答案 2 :(得分:0)

问题是我没有连接到网络,因此Google相册无法检索所选的图像。请参阅我对@ adityakamble49的回复。