ดังนั้นโดยทั่วไปสิ่งที่ฉันกำลังพยายามที่จะบรรลุจะเปิดGalleryใน Android multiple imagesและให้ผู้ใช้เลือก ตอนนี้คำถามนี้ถูกถามบ่อยแต่ฉันไม่พอใจกับคำตอบ ส่วนใหญ่เป็นเพราะฉันพบสิ่งที่น่าสนใจใน de docs ใน IDE ของฉัน (ฉันจะกลับมาในภายหลัง) และด้วยเหตุนี้ฉันจึงไม่ต้องการใช้อะแดปเตอร์ที่กำหนดเอง แต่เป็นเพียงวานิลลาเท่านั้น
ตอนนี้รหัสของฉันสำหรับเลือกภาพเดียวคือ:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 1);
ตอนนี้ผู้คนใน SO และเว็บไซต์อื่น ๆ จะบอกคุณว่าคุณมี 2 ทางเลือก:
1) อย่าใช้ACTION_GET_CONTENTแต่ใช้ACTION_SEND_MULTIPLEแทน
อันนี้ใช้ไม่ได้ อันนี้เป็นไปตามเอกสารสำหรับsendingไฟล์ไม่ใช่retrievingและนั่นคือสิ่งที่ทำ เมื่อใช้ ACTION_SEND_MULTIPLE ฉันมีหน้าต่างเปิดขึ้นที่อุปกรณ์ของฉันซึ่งฉันต้องเลือกแอปพลิเคชันเพื่อส่งข้อมูลของฉันไป นั่นไม่ใช่สิ่งที่ฉันต้องการฉันจึงสงสัยว่าผู้คนประสบความสำเร็จด้วยวิธีนี้ได้อย่างไร .. ฉันพลาดอะไรไปหรือเปล่า
2) ใช้custom Gallery. ตอนนี้นี่เป็นตัวเลือกสุดท้ายของฉันที่ฉันจะพิจารณาเพราะฉันไม่ใช่สิ่งที่ฉันกำลังค้นหาเพราะฉันต้องจัดสไตล์ด้วยตัวเองและทำไมคุณไม่สามารถเลือกหลายภาพในแกลเลอรีวานิลลาได้?
ต้องมีตัวเลือกสำหรับการนี้ .. ตอนนี้สิ่งที่น่าสนใจในสิ่งที่ I'v พบคือ:
ฉันพบนี้ในรายละเอียดของเอกสารACTION_GET_CONTENT
หากผู้โทรสามารถจัดการรายการที่ส่งคืนได้หลายรายการ (ผู้ใช้ทำการเลือกหลายรายการ) ก็สามารถระบุ EXTRA_ALLOW_MULTIPLE เพื่อระบุสิ่งนี้ได้
นี่น่าสนใจทีเดียว ที่นี่พวกเขาอ้างถึงกรณีการใช้งานที่ผู้ใช้สามารถเลือกได้หลายรายการ?
ต่อมาพวกเขาพูดในเอกสาร:
คุณสามารถใช้ EXTRA_ALLOW_MULTIPLE เพื่ออนุญาตให้ผู้ใช้เลือกหลายรายการ
นี่ก็ค่อนข้างชัดเจนใช่มั้ย? นี่คือสิ่งที่ฉันต้องการ แต่คำถามต่อไปนี้ของฉันคือฉันจะวางสิ่งนี้ได้EXTRA_ALLOW_MULTIPLEที่ไหน? สิ่งที่น่าเศร้าคือฉันไม่พบสิ่งนี้ไม่มีที่ไหนในคำแนะนำสำหรับนักพัฒนาแอนดรอยด์และสิ่งนี้ไม่ได้ถูกกำหนดให้เป็นค่าคงที่ในคลาส INTENT
มีใครช่วยฉันได้EXTRA_ALLOW_MULTIPLEบ้าง
EXTRA_ALLOW_MULTIPLEให้คุณเลือกหลายรายการ รับ URI โดยเรียกgetClipData()เจตนาที่ส่งคืนเข้าonActivityResultมา ปัญหาเดียวคือวิดเจ็ตแกลเลอรีไม่อนุญาตให้เลือกหลายรายการ ในกรณีนี้การคลิกภาพใด ๆ จะเป็นการสิ้นสุดตัวเลือกและคุณสามารถรับ URI (ของรายการเดียว) ได้โดยเรียกร้องให้getDataส่งคืนเจตนา