2011-01-20 2 views
29

@See này https://stackoverflow.com/a/15029515/185022Chọn nhiều hình ảnh từ Photo Gallery trên Android sử dụng Intents

I `m cố gắng để chọn hình ảnh từ bộ sưu tập, nhưng tôi chỉ tìm thấy con đường để lựa chọn một hình ảnh duy nhất.

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
photoPickerIntent.setType("image/*"); 
startActivityForResult(photoPickerIntent, 1); 

Có cách nào để chọn nhiều hình ảnh không?

+0

http://stackoverflow.com/questions/9379579/select-multiple-images-in-android-gallery thấy câu trả lời này – Abhi

+0

Bạn có thể xem xét sử dụng dự án của tôi: http: //stackoverflow.com/a/12806036/411162 –

Trả lời

1

Tại sao bạn không thử điều ACTION_SEND_MULTIPLE. Bạn sẽ nhận được một bộ Uris.

Something như

if (Intent.ACTION_SEND_MULTIPLE.equals(action)) 
     && Intent.hasExtra(Intent.EXTRA_STREAM)) { 
     ArrayList<Parcelable> list = 
    intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); 
     for (Parcelable parcel : list) { 
      Uri uri = (Uri) parcel; 
      /// do things here. 
     } 
    } 

Saw khối mã này trên google nhóm gửi. Chỉ cần thử điều này. Cảm ơn.

+0

Bạn có thể cố gắng giải thích ngắn gọn về tôi ... – Kalpesh

+1

@kalpesh Ok, giống như bạn kích hoạt hoạt động của mình với ** Intent.ACTION_SEND_MULTIPLE ** và sẽ ghi đè * của bạn * onActivityResult() **, trong đó u viết _code_ ở trên. Tôi chưa thử mã này, vì tôi đang ở giữa thứ gì đó. Đoạn mã trên chỉ xác minh, nếu hành động được kích hoạt và nó có thêm dữ liệu, sau đó thu thập kết quả vào danh sách mảng. Để biết thêm chi tiết, hãy xem [this] (http://developer.android.com/reference/android/content/Intent.html#ACTION_SEND_MULTIPLE). Hy vọng điều này sẽ hữu ích. :) – VenoM

+0

Tôi có nghĩa là câu trả lời của willtate là quá đủ. – VenoM

1

Tôi nghĩ, bạn nên triển khai thư viện tùy chỉnh cho nhiều hành động chọn hình ảnh.

xem chi tiết here.

+0

nhưng nó mở tất cả các hình ảnh, cách mở thư mục vise –

3

Trước hết bạn cần phải sử dụng putExtra với photoPickerIntent bạn

photoPickerIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE); 

Sau đó của bạn trên các hoạt động kết quả bạn sẽ nhận được ClipData từ Ý định như thế này

ClipData clipData = data.getClipData(); 
//Where data is param intent of onActivityForResult 

Và lặp clipData này để có được URI cho hình ảnh được chọn cụ thể.

for (int i = 0; i < clipData.getItemCount(); i++) 
{ 
    Uri uri = clipData.getItemAt(i).getUri(); 
} 

Tôi hy vọng điều này sẽ giúp

+2

EXTRA_ALLOW_MULTIPLE được thêm vào ở cấp API 18 – mbelsky