Photo Picker เป็น API เสริมสำหรับแอปที่ต้องการเข้าถึงแกลเลอรีของคุณใน Android 13 แต่กลายเป็นว่าค่อนข้างจำเป็นใน Android 14
คุณลักษณะเด่นอย่างหนึ่งของ Android 13 คือ Photo Picker ซึ่งเป็นส่วนประกอบของระบบใหม่ที่ช่วยให้ผู้ใช้เลือกรูปภาพและวิดีโอที่จะให้แอปเข้าถึงได้ แอปไม่จำเป็นต้องขออนุญาตใดๆ เพื่อเข้าถึงรายการที่ผู้ใช้เลือกผ่านตัวเลือกรูปภาพ ทำให้เป็นวิธีรักษาความเป็นส่วนตัวในการแชร์รูปภาพและวิดีโอกับแอป ตัวเลือกไฟล์ระบบที่มีมาตั้งแต่ Android 4.4 มีฟังก์ชันการทำงานมากกว่า Photo Picker แต่ UI นั้นล้าสมัยเมื่อเปรียบเทียบ
Photo Picker (และเครื่องมือเลือกไฟล์ระบบก่อนหน้านี้) ปกป้องความเป็นส่วนตัวของคุณโดยให้คุณจำกัดรูปภาพและวิดีโอที่แอปเข้าถึงได้ น่าเสียดายที่แอพจำนวนมากไม่รองรับ Photo Picker แม้ว่า Android 4.4+ จะมีเวอร์ชันที่เข้ากันได้แบบย้อนหลังก็ตาม แอพต้องเรียกใช้ Photo Picker โดยเฉพาะโดยใช้ความตั้งใจ แต่แอพจำนวนมากเลือกที่จะไม่ใช้ด้วยเหตุผลใดก็ตาม โชคดีที่นั่นอาจไม่สำคัญอีกต่อไปใน แอนดรอยด์ 14ซึ่งกำลังทดสอบวิธีให้ผู้ใช้เลือกว่าแอปรูปภาพและวิดีโอใดบ้างที่สามารถเข้าถึงผ่าน Photo Picker โดยไม่คำนึงว่าแอปเหล่านั้นใช้ API จริงหรือไม่
แอพจำนวนมากเข้าถึงไฟล์มีเดียผ่าน API ที่เก็บสื่อ. ระบบจะทำดัชนีไฟล์ตามประเภทของไฟล์ ซึ่งเรียกว่าคอลเล็กชันที่เก็บสื่อ และดูแลฐานข้อมูลที่แอปสามารถสอบถามโดยใช้ Media Store API แอปที่ใช้ Media Store API ไม่จำเป็นต้องขอสิทธิ์ในการอ่านหรือแก้ไขไฟล์ที่ตนเป็นเจ้าของ แต่จำเป็นต้องได้รับอนุญาตจากผู้ใช้จึงจะเข้าถึงไฟล์ที่เป็นของแอปอื่นได้
เริ่มตั้งแต่ Android 10 แอปที่กำหนดเป้าหมาย API ระดับ 29 ขึ้นไปจะต้องได้รับสิทธิ์ READ_EXTERNAL_STORAGE สิทธิ์โดยผู้ใช้ก่อนที่พวกเขาจะสามารถใช้ API ที่เก็บสื่อเพื่อเข้าถึงไฟล์ เป็นของแอพอื่น ใน Android 13 สิทธิ์ READ_EXTERNAL_STORAGE ถูกแบ่งออกเป็นสามสิทธิ์ที่แตกต่างกัน (READ_MEDIA_AUDIO, READ_MEDIA_VIDEO และ READ_MEDIA_IMAGES) แต่ละแอปให้สิทธิ์แอปที่กำหนดเป้าหมาย API ระดับ 33 สามารถใช้ API ของที่เก็บสื่อเพื่อเข้าถึงไฟล์เสียง วิดีโอ และรูปภาพตามลำดับซึ่งเป็นของแอปอื่น แอพ
Android 14 เปลี่ยนการอนุญาตการเข้าถึงสื่ออีกครั้งโดยการรวม READ_MEDIA_VIDEO, READ_MEDIA_IMAGES และ ACCESS_MEDIA_LOCATION เป็นการอนุญาตใหม่ที่เรียกว่า READ_MEDIA_VISUAL_USER_SELECTED การอนุญาตนี้อนุญาตให้แอปกำหนดเป้าหมาย API ระดับ 34 เพื่อ "อ่านไฟล์รูปภาพและวิดีโอที่ผู้ใช้เลือกจากที่เก็บข้อมูลที่ใช้ร่วมกัน" ตามคำอธิบาย อย่างไรก็ตาม Android 14 อาจใช้ลักษณะการทำงานใหม่นี้ย้อนหลังกับแอปที่มีอยู่ซึ่งกำหนดเป้าหมาย API ระดับ 33 (เช่น Android 13) และขอ READ_MEDIA_VIDEO หรือ READ_MEDIA_IMAGES
เมื่อแอปที่กำหนดเป้าหมาย API ระดับ 33 ทริกเกอร์กล่องโต้ตอบสิทธิ์รันไทม์เพื่อขอให้ผู้ใช้อนุญาต READ_MEDIA_VIDEO หรือ READ_MEDIA_IMAGES (หรือทั้งสองอย่าง) Android 14 อาจแทรกรายการใหม่ใน กล่องโต้ตอบสิทธิ์ที่ระบุว่า "เลือกรูปภาพ" การแตะรายการนี้จะเป็นการเปิด Photo Picker เวอร์ชันใหม่ที่ให้ผู้ใช้เลือกรูปภาพหรือวิดีโอที่ต้องการให้สิทธิ์การเข้าถึงแอป ถึง. จากนั้น แอปจะมีสิทธิ์เข้าถึงเฉพาะรายการสื่อที่ผู้ใช้เลือกโดยเฉพาะ เว้นแต่ผู้ใช้จะเลือก ขยายการเข้าถึงรายการสื่อเพิ่มเติมหรือให้สิทธิ์แอปเข้าถึงคอลเล็กชันสื่อทั้งหมดสำหรับรูปภาพและ วิดีโอ
รายการนี้ในกล่องโต้ตอบสิทธิ์ไม่แสดงตามค่าเริ่มต้นใน Android 14 DP1 เนื่องจากการเปิดเผยนั้นถูกกำหนดโดยการตั้งค่าสถานะนักพัฒนาซอฟต์แวร์ซึ่งฉันต้องสลับ หากคุณลักษณะนี้ได้รับการปล่อยตัว มันจะเป็นชัยชนะครั้งสำคัญสำหรับความเป็นส่วนตัว เนื่องจากผู้ใช้จะสามารถตัดสินใจได้เสมอว่าแอปควรเข้าถึงรูปภาพหรือวิดีโอใด
มีแอปน้อยเกินไปที่ใช้ Photo Picker API เหมือนที่เป็นอยู่ ทำให้ Google ต้องทำการทดลองด้วย ขัดขวางความตั้งใจที่มีอยู่ ที่แอพใช้เพื่อเปิดตัวเลือกไฟล์ระบบเพื่อให้พวกเขาเปิดใช้ตัวเลือกรูปภาพแทน ในขณะที่ Photo Picker มีข้อบกพร่องบางอย่าง เช่น ยังไม่แสดงไฟล์จากผู้ให้บริการสื่อบนคลาวด์ (อาจจะมีในเร็วๆ นี้ SDK ส่วนขยาย รุ่น 5!) และ แสดงเฉพาะบางอัลบั้มเท่านั้น บนอุปกรณ์นั้นดีกว่าเครื่องมือเลือกไฟล์ระบบเก่า และเป็นที่นิยมมากกว่าสำหรับทุกแอปที่เข้าถึงรูปภาพและวิดีโอทุกรายการในแกลเลอรี
นักพัฒนาที่สนใจใช้งาน Photo Picker API ควรอัปเกรดเป็นเวอร์ชันล่าสุด ห้องสมุดกิจกรรม Jetpackซึ่งจัดการกับการเรียกใช้เวอร์ชันที่เข้ากันได้แบบย้อนหลังซึ่งให้บริการผ่าน Google Play Services บน Android 4.4-Android 10 หรือเวอร์ชันที่เฟรมเวิร์กจัดเตรียมไว้ให้ผ่าน โมดูล MediaProvider Mainline.