รูปแบบการอนุญาตพื้นที่เก็บข้อมูลของ Android มีการเปลี่ยนแปลงอย่างมากในเวอร์ชันล่าสุด และการอัปเดตแต่ละครั้งจะเปลี่ยนแปลงสิ่งที่ผู้จัดการไฟล์สามารถเข้าถึงได้และไม่สามารถเข้าถึงได้หากคุณเคยเปิดตัวจัดการไฟล์แล้วพบว่าโฟลเดอร์ว่างเปล่า เส้นทางไม่สามารถเข้าถึงได้ หรือมีกล่องโต้ตอบการอนุญาตปรากฏขึ้นซ้ำๆ แสดงว่าคุณกำลังเผชิญกับผลกระทบในโลกแห่งความเป็นจริงจากการเปลี่ยนแปลงนโยบายเหล่านี้นี่คือสิ่งที่เปลี่ยนแปลงในแต่ละเวอร์ชัน และวิธีการกำหนดค่า AnExplorer เพื่อรักษาการเข้าถึงระบบไฟล์เต็มรูปแบบ
คำตอบสั้น ๆ
บน Android 11 ขึ้นไป ให้ไปที่ การตั้งค่า → แอป → AnExplorer → สิทธิ์ → ไฟล์และสื่อ → อนุญาตการจัดการไฟล์ทั้งหมดสิ่งนี้ให้สิทธิ์ MANAGE_EXTERNAL_STORAGE ที่คืนค่าความสามารถในการเรียกดูเต็มรูปแบบหากไม่มีมัน ตัวจัดการไฟล์ก็จะถูกแซนด์บ็อกซ์เหมือนกับแอปอื่นๆ
ไทม์ไลน์การอนุญาตพื้นที่เก็บข้อมูล Android
Android 9 และต่ำกว่า — ยุคเปิด
ก่อน Android 10 พื้นที่จัดเก็บข้อมูลนั้นเรียบง่ายแอปต่างๆ ร้องขอสิทธิ์ READ_EXTERNAL_STORAGE หรือ WRITE_EXTERNAL_STORAGE ในการติดตั้งหรือรันไทม์ และเมื่อได้รับสิทธิ์แล้ว แอปเหล่านั้นจะสามารถเข้าถึงการอ่าน/เขียนในพื้นที่จัดเก็บข้อมูลที่ใช้ร่วมกันทั้งหมดได้อย่างสมบูรณ์ ทุกโฟลเดอร์ ทุกไฟล์ประเภท ทุกเส้นทางตัวจัดการไฟล์ทำงานเหมือนกับที่คุณคาดหวังให้โปรแกรมสำรวจไฟล์บนเดสก์ท็อปทำงานได้
สิ่งนี้ทรงพลังแต่สร้างความกังวลด้านความปลอดภัยแอพใดๆ ที่ได้รับอนุญาตจากพื้นที่เก็บข้อมูลสามารถอ่านรูปภาพ เอกสาร ดาวน์โหลด และไฟล์ส่งออกของแอพอื่นๆ ได้โดยไม่มีข้อจำกัด
Android 10 — เปิดตัวที่เก็บข้อมูลที่กำหนดขอบเขต (ไม่บังคับ)
Android 10 นำเสนอพื้นที่เก็บข้อมูลที่กำหนดขอบเขตเป็นแนวคิด แต่กำหนดให้นักพัฒนาเลือกใช้แอปที่กำหนดเป้าหมาย API 29 สามารถเพิ่ม requestLegacyExternalStorage=true ในรายการเพื่อรักษาลักษณะการทำงานแบบเก่าตัวจัดการไฟล์ส่วนใหญ่ใช้แฟล็กนี้ ดังนั้นผู้ใช้จึงไม่เห็นความแตกต่างในทางปฏิบัติ
การเปลี่ยนแปลงที่สำคัญที่นำมาใช้:
- แนวคิดของ "ที่จัดเก็บข้อมูลภายนอกเฉพาะแอป" (
Android/data/[package]/) กลายเป็นแซนด์บ็อกซ์อย่างเป็นทางการ - MediaStore API เป็นวิธีที่แนะนำในการเข้าถึงไฟล์มีเดีย
- Storage Access Framework (SAF) ได้รับความสำคัญสำหรับการเข้าถึงเอกสาร
- การเข้าถึงเส้นทางไฟล์โดยตรงนั้นเลิกใช้แล้วในทางเทคนิค แต่ยังคงใช้งานได้กับการตั้งค่าสถานะแบบเดิม
Android 11 — บังคับใช้พื้นที่เก็บข้อมูลที่กำหนดขอบเขต
Android 11 คือจุดแตกหักการตั้งค่าสถานะ requestLegacyExternalStorage หยุดทำงานสำหรับแอปที่กำหนดเป้าหมายเป็น API 30+ขณะนี้ทุกแอปได้รับการกำหนดขอบเขตตามค่าเริ่มต้นอย่างไรก็ตาม Google ตระหนักดีว่าตัวจัดการไฟล์ เครื่องมือสำรองข้อมูล และแอปป้องกันไวรัสจำเป็นต้องเข้าถึงในวงกว้างอย่างแท้จริง ดังนั้นพวกเขาจึงสร้างการอนุญาตใหม่:
MANAGE_EXTERNAL_STORAGE — สิทธิ์ "การเข้าถึงไฟล์ทั้งหมด"นี่เป็นการอนุญาตพิเศษที่:
- จะต้องประกาศไว้ในรายการแอป
- ต้องการให้ผู้ใช้นำทางไปยังการตั้งค่าด้วยตนเองเพื่อให้อนุญาต (ไม่สามารถอนุญาตผ่านกล่องโต้ตอบรันไทม์แบบธรรมดา)
- จะต้องได้รับการพิสูจน์ต่อ Google ในระหว่างการตรวจสอบ Play Store
- ให้สิทธิ์การเข้าถึงพื้นที่เก็บข้อมูลที่ใช้ร่วมกันทั้งหมด ยกเว้น
Android/data/และAndroid/obb/ไดเร็กทอรี
เมื่อ AnExplorer ร้องขอการอนุญาตนี้ คุณจะเห็นหน้าจอระบบขอให้คุณสลับ "อนุญาตการจัดการไฟล์ทั้งหมด"นี่ไม่ใช่ข้อบกพร่องหรือการเข้าถึงมากเกินไป แต่เป็นวิธีเดียวที่ตัวจัดการไฟล์สามารถทำงานได้อย่างถูกต้องบน Android 11+
Android 12 — การปรับปรุงเล็กน้อย
Android 12 ไม่ได้เปลี่ยนการอนุญาตพื้นที่เก็บข้อมูลอย่างมาก แต่เพิ่ม:
- การอนุญาตอุปกรณ์ใกล้เคียงที่ส่งผลต่อคุณสมบัติการถ่ายโอนไฟล์
- การเปลี่ยนแปลงเล็กน้อยเกี่ยวกับวิธีการทำงานของตัวเลือกรูปภาพ
- การบังคับใช้กฎการเปิดเผยแพ็คเกจที่ดีขึ้น (แอปไม่สามารถมองเห็นว่ามีการติดตั้งแอปอื่น ๆ ใดบ้างโดยไม่ต้องประกาศคำสั่ง)
สำหรับฟังก์ชันตัวจัดการไฟล์ Android 12 ทำงานเหมือนกับ Android 11
Android 13 — สิทธิ์อนุญาตสื่อแบบละเอียด
Android 13 แบ่ง READ_EXTERNAL_STORAGE แบบเก่าออกเป็นสามสิทธิ์แยกกัน:
READ_MEDIA_IMAGES— เข้าถึงภาพถ่ายและภาพREAD_MEDIA_VIDEO— เข้าถึงไฟล์วิดีโอREAD_MEDIA_AUDIO— เข้าถึงไฟล์เพลงและไฟล์เสียง
ตอนนี้แอปจะขอเฉพาะประเภทสื่อที่ต้องการจริงๆ เท่านั้นเครื่องเล่นเพลงจะถามเฉพาะเสียงเท่านั้นโปรแกรมแก้ไขภาพจะขอเฉพาะรูปภาพเท่านั้นตัวจัดการไฟล์ที่มีสิทธิ์การเข้าถึงไฟล์ทั้งหมดจะข้ามสิทธิ์แบบละเอียดเหล่านี้โดยสิ้นเชิง เนื่องจาก MANAGE_EXTERNAL_STORAGE ครอบคลุมทุกอย่างแล้ว
Android 13 ยังบล็อกการเข้าถึง Android/data/ ของบุคคลที่สามโดยสมบูรณ์ผ่านทาง Storage Access Frameworkก่อนหน้านี้ คุณสามารถใช้ SAF เพื่อให้สิทธิ์การเข้าถึงโฟลเดอร์แก่ Android/data/ — วิธีแก้ปัญหาดังกล่าวถูกปิดแล้ว
Android 14 — การเข้าถึงรูปภาพที่เลือก
Android 14 นำเสนอการเปลี่ยนแปลงที่ผู้ใช้เผชิญมากที่สุด: เมื่อแอปขอสิทธิ์เข้าถึงรูปภาพ ผู้ใช้สามารถเลือก "เลือกรูปภาพและวิดีโอ" แทนการให้สิทธิ์เข้าถึงสื่อทั้งหมดได้ซึ่งหมายความว่า:
- แอปจะเห็นเฉพาะไฟล์ที่ผู้ใช้เลือกเท่านั้น
- ผู้ใช้สามารถแก้ไขการเลือกได้ในภายหลังในการตั้งค่า
- แอปจะต้องจัดการการเข้าถึงบางส่วนอย่างสง่างาม
สำหรับตัวจัดการไฟล์ที่มีสิทธิ์เข้าถึงไฟล์ทั้งหมด จะไม่มีผล — MANAGE_EXTERNAL_STORAGE ยังคงให้การมองเห็นสื่อเต็มรูปแบบแต่หากคุณไม่ได้ให้สิทธิ์การเข้าถึงไฟล์ทั้งหมด คุณอาจพบว่า AnExplorer สามารถดูได้เฉพาะไฟล์ที่คุณเลือกไว้อย่างชัดเจนเท่านั้น
Android 14 ยังแนะนำ:
- การเข้าถึงตามข้อมูลรับรองสำหรับไฟล์ที่จัดการโดยองค์กร
- การปรับปรุงเครื่องมือเลือกรูปภาพด้วยการผสานรวมผู้ให้บริการคลาวด์
- ข้อ จำกัด ที่เข้มงวดยิ่งขึ้นในการเข้าถึงไฟล์พื้นหลัง
วิธีการทำงานของ Storage Access Framework (SAF)
เมื่อตัวจัดการไฟล์ขาดการเข้าถึงไฟล์ทั้งหมด กรอบการเข้าถึงที่เก็บข้อมูลจะกลายเป็นกลไกทางเลือกSAF ทำงานผ่านเครื่องมือเลือกเอกสารระดับระบบ:
- แอปเรียก
ACTION_OPEN_DOCUMENT_TREEเพื่อขอเข้าถึงโฟลเดอร์ - Android จะแสดงตัวเลือกไฟล์ระบบที่คุณนำทางไปยังโฟลเดอร์ที่ต้องการ
- คุณแตะ "ใช้โฟลเดอร์นี้" และยืนยันด้วย "อนุญาต"
- แอปได้รับการอนุญาต URI แบบถาวรสำหรับโฟลเดอร์เฉพาะนั้นและเนื้อหาทั้งหมด
- เงินช่วยเหลือนี้ยังคงอยู่กับการรีสตาร์ทแอปและการรีบูตโทรศัพท์
การให้สิทธิ์ SAF นั้นทรงพลังแต่น่าเบื่อ — คุณต้องให้สิทธิ์แต่ละโฟลเดอร์ด้วยตนเองAnExplorer ใช้ SAF เป็นทางเลือกเมื่อการเข้าถึงไฟล์ทั้งหมดไม่พร้อมใช้งานหรือเมื่อเข้าถึงเส้นทางที่ได้รับการป้องกันเฉพาะ
ข้อจำกัดของ SAF
- ไม่สามารถให้สิทธิ์การเข้าถึงรูทที่จัดเก็บข้อมูลภายในบน Android 13+
- ไม่สามารถเข้าถึง
Android/data/บน Android 13+ - ไม่สามารถเข้าถึง
Android/obb/บน Android 13+ - ประสิทธิภาพช้ากว่าการเข้าถึงไฟล์โดยตรงอย่างมาก (การดำเนินการผ่านผู้ให้บริการเนื้อหา)
- การดำเนินการบางอย่าง (เช่น การดำเนินการโฟลเดอร์แบบเรียกซ้ำ) จะช้ากว่ามากผ่าน SAF
การกำหนดค่า AnExplorer เพื่อการเข้าถึงสูงสุด
เพื่อประสบการณ์ที่ดีที่สุดใน Android เวอร์ชันทั้งหมด:
- ให้สิทธิ์การเข้าถึงไฟล์ทั้งหมด: การตั้งค่า → แอป → AnExplorer → สิทธิ์ → ไฟล์และสื่อ → อนุญาตการจัดการไฟล์ทั้งหมด
- อนุญาตการแจ้งเตือน (Android 13+): จำเป็นสำหรับการแสดงความคืบหน้าในการถ่ายโอน
- ปิดใช้งานการเพิ่มประสิทธิภาพแบตเตอรี่: การตั้งค่า → แอป → AnExplorer → แบตเตอรี่ → ไม่จำกัด (ป้องกันไม่ให้ระบบปฏิบัติการหยุดการทำงานของพื้นหลัง)
- ให้สิทธิ์การเข้าถึง SAF สำหรับ Android/ข้อมูล (Android 11-12 เท่านั้น): เมื่อ AnExplorer แจ้งให้เข้าถึงโฟลเดอร์ไปยัง Android/ข้อมูล ให้แตะ "ใช้โฟลเดอร์นี้" → "อนุญาต"
สิ่งที่ยังไม่สามารถเข้าถึงได้หากไม่มีรูท
แม้ว่าจะให้สิทธิ์การเข้าถึงไฟล์ทั้งหมดแล้วก็ตาม เส้นทางบางเส้นทางยังคงถูกบล็อกโดยโมเดลความปลอดภัยของ Android:
| เส้นทาง | เหตุใดจึงถูกบล็อก | ทางเลือก |
|---|---|---|
/data/data/ | แซนด์บ็อกซ์ของแอป (บังคับใช้เคอร์เนล) | ADB หรือการเข้าถึงรูท |
/data/user/0/ | เช่นเดียวกับด้านบน รูปแบบผู้ใช้หลายราย | ADB หรือการเข้าถึงรูท |
Android/data/ (Android 13+) | บล็อกนโยบายระบบปฏิบัติการ | USB MTP จากพีซี, ADB หรือรูท |
Android/obb/ (Android 13+) | บล็อกนโยบายระบบปฏิบัติการ | USB MTP จากพีซี, ADB หรือรูท |
/system/ | พาร์ติชันแบบอ่านอย่างเดียว | รูทพร้อมต่อเชื่อมใหม่ |
การแก้ไขปัญหาการอนุญาต
"การอนุญาตถูกปฏิเสธ" แม้ว่าจะได้รับสิทธิ์การเข้าถึงไฟล์ทั้งหมดก็ตาม
- บังคับหยุด AnExplorer แล้วเปิดใหม่อีกครั้ง
- เพิกถอนการอนุญาตและให้อนุญาตใหม่
- ตรวจสอบว่าคุณให้สิทธิ์ "ไฟล์ทั้งหมด" และไม่ใช่แค่ "สื่อเท่านั้น" (อุปกรณ์บางตัวแสดงทั้งสองตัวเลือก)
- รีสตาร์ทโทรศัพท์ของคุณ — การอนุญาตบางอย่างจำเป็นต้องรีบูตจึงจะมีผล
การอนุญาตจะรีเซ็ตต่อไปหลังจากผ่านไปสองสามวัน
Android 12+ จะเพิกถอนสิทธิ์จากแอปที่คุณไม่ได้ใช้เมื่อเร็วๆ นี้โดยอัตโนมัติ (ปกติคือ 3 เดือน)เพื่อป้องกันสิ่งนี้:
- การตั้งค่า → แอป → AnExplorer → การอนุญาต → สลับปิด "ลบการอนุญาตหากไม่ได้ใช้แอป"
- หรือเพียงเปิด AnExplorer เป็นครั้งคราวเพื่อให้ถือว่า "ใช้งานอยู่"
แอปแสดงโฟลเดอร์ว่างแม้จะได้รับอนุญาตก็ตาม
ซึ่งมักจะบ่งชี้ว่าแอปกำลังอ่านจากรายการไดเร็กทอรีที่แคช/เก่าดึงลงเพื่อรีเฟรช หรือนำทางออกและกลับเข้าไปในโฟลเดอร์หากปัญหายังคงอยู่ ให้ล้างแคชของ AnExplorer (การตั้งค่า → แอป → AnExplorer → ที่เก็บข้อมูล → ล้างแคช)
คำแนะนำที่เกี่ยวข้อง
- การเปลี่ยนแปลงพื้นที่เก็บข้อมูล Android 14 — รายละเอียดข้อจำกัดล่าสุด
- ตัวจัดการไฟล์ไม่เปิด — แก้ไขข้อขัดข้องที่เกี่ยวข้องกับการรีเซ็ตสิทธิ์
- Internal vs External Storage — เข้าใจสถาปัตยกรรมการจัดเก็บข้อมูลของ Android
- ไม่สามารถลบไฟล์ — ความล้มเหลวในการลบที่เกี่ยวข้องกับสิทธิ์