【发布时间】:2017-10-10 09:00:22
【问题描述】:
在我的应用程序中,我想让用户从图库中选择一张图片并检索结果(缩略图 + 完整图片 uri)。我还希望用户能够选择打开哪个画廊应用程序(即默认画廊应用程序或其他画廊应用程序)。
最初,根据谷歌的guide,我复制并粘贴了这段代码:
public void selectImage() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, REQUEST_IMAGE_GET);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_GET && resultCode == RESULT_OK) {
Bitmap thumbnail = data.getParcelable("data");
Uri fullPhotoUri = data.getData();
// Do work with photo saved at fullPhotoUri
...
}
}
虽然它确实为我提供了 onActivityResult(...) 中的缩略图和完整 Uri,但问题是它没有打开选择器供用户选择要使用的画廊应用程序,而是打开了这个东西(见下图) ,我认为这是一个默认的“图像选择器”,您可以通过菜单选择另一个应用程序。
我觉得用户必须先打开这个默认的“图像选择器”并且一旦他们已经在“图像选择器”中,选择他们实际想要使用的画廊应用程序(当然,用户可以只是从这个东西中选择图像,但我想给他们一个方便的选择)。
所以我把我的代码改成了这个,它确实为用户显示了一个合适的选择器,他可以直接去他最喜欢的画廊应用程序:
Intent intent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
if (intent.resolveActivity(getActivity().getPackageManager()) != null)
{
startActivityForResult(intent, Utils.REQUEST_CODE_OPEN_GALLERY);
}
但是现在我遇到了一个新问题:在onActivityResult(...) 中,data.getParcelable("data"); 行返回 null。换句话说,我没有取回缩略图。
我也试过了
Bundle extras = data.getExtras();
Bitmap thumbnail = (Bitmap) extras.get("data");
但“附加”为空。
是否有可能有一个适当的“应用程序选择器”并取回缩略图?
【问题讨论】:
-
你可以试试这个有图片选择器github.com/jdamcd/android-crop的裁剪库
-
@dakshbhatt21 谢谢我试一试
标签: android android-intent android-gallery