在onActivityResult方法中从库中接收多个图像

时间:2014-04-25 10:06:34

标签: android android-listview android-gallery

我想在我的应用程序的onActivity Result方法中从图库中获取多个图像,但我无法为其创建游标。如果我不使用光标,我无法获得所有图像的Uris。如果我必须选择单个图像,代码非常简单:

@Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);

 if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
     Uri selectedImage = data.getData();
     String[] filePathColumn = { MediaStore.Images.Media.DATA };

     Cursor cursor = getContentResolver().query(selectedImage,
             filePathColumn, null, null, null);
     cursor.moveToFirst();

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
     String picturePath = cursor.getString(columnIndex);
     cursor.close();

     // String picturePath contains the path of selected Image
     }

任何人都可以帮助我。

2 个答案:

答案 0 :(得分:7)

图库似乎不允许多个项目,但其他可能响应选择器意图的应用程序可以(例如我的Samsung Galaxy平板电脑上的照片)。您可以使用getClipData()获取多个Uris,例如:

ClipData clip = data.getClipData();

for(int i = 0; i < clip.getItemCount(); i++) {
    ClipData.Item item = clip.getItemAt(i);
    Uri uri = item.getUri();

    // Process the uri...
}

请注意,您可能会在问题中获得data.getData()的响应,因此需要检查两者...

答案 1 :(得分:0)

我不确定SDK是否允许您使用意图来选择多个图像。您可能需要开发自己的图像选择器。

你可以探索这个github仓库,看看它是如何工作的: https://github.com/luminousman/MultipleImagePick