ดังนั้นโดยทั่วไปสิ่งที่ฉันกำลังพยายามที่จะบรรลุจะเปิด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
ส่งคืนเจตนา