การเปลี่ยนแปลงด้านความเป็นส่วนตัวใน Android 10

Android 10 (API ระดับ 29) มีฟีเจอร์และการเปลี่ยนแปลงด้านลักษณะการทำงานหลายอย่างเพื่อปกป้องความเป็นส่วนตัวของผู้ใช้ให้ดียิ่งขึ้น การเปลี่ยนแปลงเหล่านี้ช่วยเพิ่มความโปร่งใสและการควบคุมที่ผู้ใช้มีต่อข้อมูลและความสามารถที่ผู้ใช้มอบให้แก่แอป ฟีเจอร์เหล่านี้อาจหมายความว่าลักษณะการทำงานหรือข้อมูลบางอย่างที่แอปของคุณใช้อาจทำงานแตกต่างจากแพลตฟอร์มเวอร์ชันเก่า ผลกระทบต่อแอปควรน้อยลง หากแอปทำตามแนวทางปฏิบัติแนะนำในปัจจุบันในการจัดการข้อมูลผู้ใช้

หน้านี้จะแสดงข้อมูลสรุปของการเปลี่ยนแปลงแต่ละรายการ

การเปลี่ยนแปลงสูงสุด

ส่วนนี้ประกอบด้วยการเปลี่ยนแปลงที่สำคัญใน Android 10 ที่เกี่ยวข้องกับความเป็นส่วนตัว

การเข้าถึงพื้นที่เก็บข้อมูลภายนอกที่มีขอบเขตระดับไฟล์และสื่อของแอป

โดยค่าเริ่มต้น แอปที่กำหนดเป้าหมายเป็น Android 10 ขึ้นไปจะได้รับสิทธิ์เข้าถึงแบบจำกัดที่จัดเก็บข้อมูลภายนอก หรือพื้นที่เก็บข้อมูลแบบจำกัด แอปดังกล่าวจะดูไฟล์ประเภทต่อไปนี้ภายในอุปกรณ์จัดเก็บข้อมูลภายนอกได้โดยไม่ต้องขอสิทธิ์ใดๆ ที่เกี่ยวข้องกับพื้นที่เก็บข้อมูลจากผู้ใช้

  • ไฟล์ในไดเรกทอรีเฉพาะแอป เข้าถึงได้โดยใช้ getExternalFilesDir()
  • รูปภาพ วิดีโอ และคลิปเสียงที่แอปสร้างขึ้นจากที่เก็บสื่อ

ดูข้อมูลเพิ่มเติมเกี่ยวกับพื้นที่เก็บข้อมูลแบบจำกัดขอบเขต รวมถึงวิธีแชร์ เข้าถึง และแก้ไขไฟล์ที่บันทึกไว้ในอุปกรณ์จัดเก็บข้อมูลภายนอกได้จากคำแนะนำเกี่ยวกับวิธีจัดการไฟล์ในพื้นที่เก็บข้อมูลภายนอก และวิธีเข้าถึงและแก้ไขไฟล์สื่อ

การเข้าถึงตำแหน่งอุปกรณ์ในเบื้องหลังต้องได้รับสิทธิ์

Android 10 เปิดตัวสิทธิ์ ACCESS_BACKGROUND_LOCATION เพื่อรองรับการควบคุมเพิ่มเติมที่ผู้ใช้มีสิทธิ์ในการเข้าถึงข้อมูลตําแหน่งของแอป

สิทธิ์ ACCESS_BACKGROUND_LOCATION จะส่งผลต่อการเข้าถึงตำแหน่งของแอปเมื่อทำงานในเบื้องหลังเท่านั้น ซึ่งแตกต่างจากสิทธิ์ ACCESS_FINE_LOCATION และ ACCESS_COARSE_LOCATION ระบบจะถือว่าแอปเข้าถึงตำแหน่งในเบื้องหลัง เว้นแต่ว่าแอปจะเป็นไปตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้

  • กิจกรรมที่เป็นของแอปจะปรากฏขึ้น
  • แอปกำลังใช้บริการที่ทำงานอยู่เบื้องหน้าซึ่งประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้าเป็น location

    หากต้องการประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้าสำหรับบริการในแอป ให้ตั้งค่า targetSdkVersion หรือ compileSdkVersion ของแอปเป็น 29 ขึ้นไป ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่บริการที่ทำงานอยู่เบื้องหน้าสามารถดำเนินการที่ผู้ใช้เริ่มไว้ต่อไปซึ่งจำเป็นต้องเข้าถึงตำแหน่ง

หากแอปสร้างและตรวจสอบเขตพื้นที่เสมือน รวมถึงกำหนดเป้าหมายเป็น Android 10 (API ระดับ 29) ขึ้นไป คุณต้องประกาศสิทธิ์ ACCESS_BACKGROUND_LOCATION

ให้สิทธิ์เข้าถึงโดยอัตโนมัติเมื่อกําหนดเป้าหมายเป็น Android 9 หรือต่ำกว่า

หากแอปของคุณทำงานบน Android 10 ขึ้นไปแต่กำหนดเป้าหมายเป็น Android 9 (API ระดับ 28) หรือต่ำกว่า แพลตฟอร์มจะใช้ลักษณะการทำงานต่อไปนี้

  • หากแอปประกาศองค์ประกอบ <uses-permission> สำหรับ ACCESS_FINE_LOCATION หรือ ACCESS_COARSE_LOCATION ระบบจะเพิ่มองค์ประกอบ <uses-permission> สำหรับ ACCESS_BACKGROUND_LOCATION โดยอัตโนมัติในระหว่างการติดตั้ง
  • หากแอปขอ ACCESS_FINE_LOCATION หรือ ACCESS_COARSE_LOCATION ระบบจะเพิ่ม ACCESS_BACKGROUND_LOCATION ลงในคําขอโดยอัตโนมัติ

เข้าถึงเมื่ออุปกรณ์อัปเกรดเป็น Android 10

หากผู้ใช้ให้สิทธิ์เข้าถึงตำแหน่งอุปกรณ์แก่แอปของคุณ ไม่ว่าจะACCESS_COARSE_LOCATION หรือACCESS_FINE_LOCATION แล้วอัปเกรดอุปกรณ์จาก Android 9 เป็น Android 10 ระบบจะอัปเดตชุดสิทธิ์ตามตำแหน่งที่มอบให้กับแอปโดยอัตโนมัติ ชุดสิทธิ์ที่แอปได้รับหลังจากการอัปเกรดจะขึ้นอยู่กับเวอร์ชัน SDK เป้าหมายและสิทธิ์ที่กําหนดไว้ ดังที่แสดงในตารางต่อไปนี้

ตารางที่ 1 การเปลี่ยนแปลงสถานะสิทธิ์เข้าถึงตำแหน่งหลังจากอัปเกรดอุปกรณ์เป็น Android 10

เวอร์ชันแพลตฟอร์มเป้าหมาย สิทธิ์แบบหยาบหรือละเอียด
ได้รับอนุญาตไหม
สิทธิ์เข้าถึงในเบื้องหลัง
ที่กําหนดในไฟล์ Manifest
อัปเดตสถานะสิทธิ์เริ่มต้น
Android 10 ใช่ ใช่ การเข้าถึงเมื่ออยู่เบื้องหน้าและเบื้องหลัง
Android 10 ใช่ ไม่ การเข้าถึงในเบื้องหน้าเท่านั้น
Android 10 ไม่ (ระบบละเว้น) ไม่มีสิทธิ์เข้าถึง
Android 9 หรือต่ำกว่า ใช่ ระบบเพิ่มโดยอัตโนมัติเมื่อถึงเวลาอัปเกรดอุปกรณ์ การเข้าถึงเมื่ออยู่เบื้องหน้าและเบื้องหลัง
Android 9 หรือต่ำกว่า ไม่ (ระบบละเว้น) ไม่มีสิทธิ์เข้าถึง

โปรดทราบว่าผู้ใช้สามารถเปลี่ยนระดับการเข้าถึงนี้ได้แม้ว่าระบบจะอัปเดตสิทธิ์เข้าถึงตำแหน่งอุปกรณ์ของแอปโดยอัตโนมัติแล้วก็ตาม เช่น ผู้ใช้อาจลดสิทธิ์เข้าถึงของแอปเป็นเบื้องหน้าเท่านั้น หรือเพิกถอนสิทธิ์เข้าถึงโดยสิ้นเชิง ก่อนพยายามเข้าถึงตำแหน่งของอุปกรณ์ โดยเฉพาะภายในบริการที่ทำงานอยู่เบื้องหน้า แอปของคุณควรตรวจสอบว่าผู้ใช้ยังคงอนุญาตให้แอปของคุณรับข้อมูลตำแหน่งนี้หรือไม่

เพิกถอนสิทธิ์เข้าถึงเมื่ออัปเดตระดับ API เป้าหมายในอุปกรณ์ Android 10

พิจารณากรณีที่ติดตั้งแอปในอุปกรณ์ที่ใช้ Android 10 อยู่แล้ว หากคุณอัปเดตแอปเพื่อกำหนดเป้าหมายเป็น Android 10 ในสถานการณ์นี้ อุปกรณ์จะเพิกถอนสิทธิ์ ACCESS_BACKGROUND_LOCATION

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเรียกข้อมูลตำแหน่งของอุปกรณ์ขณะที่แอปทำงานอยู่เบื้องหลังได้ในคู่มือการรับการอัปเดตตำแหน่งเป็นระยะ

ข้อจํากัดในการเริ่มกิจกรรมจากเบื้องหลัง

ตั้งแต่ Android 10 เป็นต้นไป ระบบจะจำกัดการเริ่มกิจกรรมจากเบื้องหลัง การเปลี่ยนแปลงลักษณะการทํางานนี้ช่วยลดการหยุดชะงักของผู้ใช้และช่วยให้ผู้ใช้ควบคุมสิ่งที่แสดงบนหน้าจอได้มากขึ้น ตราบใดที่แอปเริ่มกิจกรรมเป็นผลโดยตรงจากการโต้ตอบของผู้ใช้ แอปก็น่าจะไม่ได้รับผลกระทบจากข้อจำกัดเหล่านี้

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับทางเลือกที่แนะนำสำหรับการเริ่มกิจกรรมจากเบื้องหลัง โปรดอ่านคำแนะนำเกี่ยวกับวิธีแจ้งเตือนผู้ใช้เกี่ยวกับเหตุการณ์ที่ต้องคำนึงถึงเวลาเป็นสำคัญในแอป

ตัวระบุและข้อมูล

ส่วนนี้จะแสดงการเปลี่ยนแปลงเฉพาะสำหรับการทำงานกับตัวระบุและข้อมูลอุปกรณ์

การนำความสัมพันธ์ของรายชื่อติดต่อออก

ตั้งแต่ Android 10 เป็นต้นไป แพลตฟอร์มจะไม่ติดตามข้อมูลความเกี่ยวข้องของรายชื่อติดต่อ ดังนั้น หากแอปของคุณทำการค้นหารายชื่อติดต่อของผู้ใช้ ผลการค้นหาจะไม่เรียงตามความถี่ของการโต้ตอบ

คำแนะนำเกี่ยวกับ ContactsProvider มีประกาศที่อธิบายช่องและวิธีการที่ล้าสมัยในอุปกรณ์ทุกเครื่องตั้งแต่ Android 10 เป็นต้นไป

การสุ่มที่อยู่ MAC

ในอุปกรณ์ที่ใช้ Android 10 ขึ้นไป ระบบจะส่งที่อยู่ MAC แบบสุ่มโดยค่าเริ่มต้น

หากแอปจัดการกรณีการใช้งานสำหรับองค์กร แพลตฟอร์มจะมี API สำหรับการดำเนินการต่างๆ ที่เกี่ยวข้องกับที่อยู่ MAC ดังนี้

  • รับที่อยู่ MAC แบบสุ่ม: แอปเจ้าของอุปกรณ์และแอปเจ้าของโปรไฟล์จะเรียกข้อมูลที่อยู่ MAC แบบสุ่มที่กำหนดให้กับเครือข่ายหนึ่งๆ ได้โดยเรียกใช้ getRandomizedMacAddress()
  • รับที่อยู่ MAC จริงของโรงงาน: แอปของเจ้าของอุปกรณ์สามารถเรียกดูที่อยู่ MAC ของฮาร์ดแวร์จริงของอุปกรณ์ได้โดยการเรียกใช้ getWifiMacAddress() วิธีนี้มีประโยชน์ในการติดตามกลุ่มอุปกรณ์

การจํากัดการเข้าถึงระบบไฟล์ /proc/net

ในอุปกรณ์ที่ใช้ Android 10 ขึ้นไป แอปจะเข้าถึง /proc/net ซึ่งรวมถึงข้อมูลเกี่ยวกับสถานะเครือข่ายของอุปกรณ์ไม่ได้ แอปที่ต้องเข้าถึงข้อมูลนี้ เช่น VPN ควรใช้คลาส NetworkStatsManager หรือ ConnectivityManager

ข้อจํากัดเกี่ยวกับตัวระบุอุปกรณ์ที่รีเซ็ตไม่ได้

ตั้งแต่ Android 10 เป็นต้นไป แอปต้องมีREAD_PRIVILEGED_PHONE_STATEสิทธิ์ที่มีอภิสิทธิ์จึงจะเข้าถึงตัวระบุที่รีเซ็ตไม่ได้ของอุปกรณ์ได้ ซึ่งรวมถึงทั้ง IMEI และหมายเลขซีเรียล

วิธีการที่ได้รับผลกระทบมีดังนี้

หากแอปไม่มีสิทธิ์แต่คุณพยายามขอข้อมูลเกี่ยวกับตัวระบุที่รีเซ็ตไม่ได้ การตอบสนองของแพลตฟอร์มจะแตกต่างกันไปตามเวอร์ชัน SDK เป้าหมาย ดังนี้

  • หากแอปกำหนดเป้าหมายเป็น Android 10 ขึ้นไป ระบบจะแสดงSecurityException
  • หากแอปกำหนดเป้าหมายเป็น Android 9 (API ระดับ 28) หรือต่ำกว่า เมธอดนี้จะแสดงnullหรือข้อมูลตัวยึดตำแหน่งหากแอปมีสิทธิ์READ_PHONE_STATE มิเช่นนั้น SecurityException จะปรากฏขึ้น

กรณีการใช้งานหลายกรณีไม่จำเป็นต้องใช้ตัวระบุอุปกรณ์ที่รีเซ็ตไม่ได้ ตัวอย่างเช่น หากแอปใช้ตัวระบุอุปกรณ์ที่รีเซ็ตไม่ได้เพื่อวัตถุประสงค์ในการติดตามโฆษณาหรือการวิเคราะห์ผู้ใช้ ให้ใช้รหัสโฆษณา Android กับกรณีการใช้งานที่เฉพาะเจาะจงเหล่านั้นแทน ดูข้อมูลเพิ่มเติมได้ในแนวทางปฏิบัติแนะนำสำหรับตัวระบุที่ไม่ซ้ำกัน

เข้าถึงข้อมูลคลิปบอร์ดได้จำกัด

แอปจะเข้าถึงข้อมูลคลิปบอร์ดใน Android 10 ขึ้นไปไม่ได้ เว้นแต่ว่าแอปของคุณจะเป็นเครื่องมือแก้ไขวิธีการป้อนข้อมูล (IME) เริ่มต้น หรือเป็นแอปที่กำลังโฟกัสอยู่

การป้องกันหมายเลขซีเรียลของอุปกรณ์ USB

หากแอปกำหนดเป้าหมายเป็น Android 10 ขึ้นไป แอปจะอ่านหมายเลขซีเรียลไม่ได้จนกว่าผู้ใช้จะให้สิทธิ์แอปเข้าถึงอุปกรณ์หรืออุปกรณ์เสริม USB

ดูข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับอุปกรณ์ USB ได้ที่คำแนะนำเกี่ยวกับวิธีกำหนดค่าโฮสต์ USB

กล้องและการเชื่อมต่อ

ส่วนนี้จะแสดงการเปลี่ยนแปลงเฉพาะสำหรับข้อมูลเมตาของกล้องและ API การเชื่อมต่อ

ข้อจำกัดในการเข้าถึงรายละเอียดและข้อมูลเมตาของกล้อง

Android 10 เปลี่ยนความกว้างของข้อมูลที่เมธอด getCameraCharacteristics() แสดงผลโดยค่าเริ่มต้น โดยเฉพาะอย่างยิ่ง แอปของคุณต้องมีสิทธิ์ CAMERA เพื่อเข้าถึงข้อมูลเมตาเฉพาะอุปกรณ์ที่อาจรวมอยู่ในค่าการคืนสินค้าของวิธีนี้

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงเหล่านี้ได้ที่ส่วนช่องกล้องที่ต้องใช้สิทธิ์

ข้อจำกัดในการเปิดและปิดใช้ Wi-Fi

แอปที่กําหนดเป้าหมายเป็น Android 10 ขึ้นไปจะเปิดหรือปิดใช้ Wi-Fi ไม่ได้ เมธอด WifiManager.setWifiEnabled() จะแสดงผลลัพธ์เป็น false เสมอ

หากต้องการแจ้งให้ผู้ใช้เปิดและปิดใช้ Wi-Fi ให้ใช้แผงการตั้งค่า

ข้อจำกัดในการเข้าถึงเครือข่าย Wi-Fi ที่กําหนดค่าไว้โดยตรง

การกำหนดค่ารายการเครือข่าย Wi-Fi ด้วยตนเองจะจำกัดไว้สำหรับแอประบบและตัวควบคุมนโยบายอุปกรณ์ (DPC) เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้ DPC หนึ่งๆ อาจเป็นทั้งเจ้าของอุปกรณ์หรือเจ้าของโปรไฟล์ก็ได้

หากแอปกำหนดเป้าหมายเป็น Android 10 ขึ้นไป และไม่ใช่แอประบบหรือ DPC วิธีการต่อไปนี้จะไม่แสดงข้อมูลที่เป็นประโยชน์

  • เมธอด getConfiguredNetworks() จะแสดงผลเป็นรายการว่างเสมอ

  • วิธีการดําเนินการของเครือข่ายแต่ละวิธีซึ่งแสดงผลค่าจำนวนเต็ม addNetwork() และ updateNetwork() จะแสดงผลเป็น -1 เสมอ

  • การดำเนินการแต่ละรายการของเครือข่ายที่แสดงผลค่าบูลีน removeNetwork(), reassociate(), enableNetwork(), disableNetwork(), reconnect() และ disconnect() จะแสดงผลเป็น false เสมอ

หากแอปของคุณต้องเชื่อมต่อเครือข่าย Wi-Fi ให้ใช้วิธีอื่นต่อไปนี้

  • หากต้องการทริกเกอร์การเชื่อมต่อ Wi-Fi ในพื้นที่ทันที ให้ใช้ WifiNetworkSpecifier ในออบเจ็กต์ NetworkRequest มาตรฐาน
  • หากต้องการเพิ่มเครือข่าย Wi-Fi เพื่อพิจารณาให้สิทธิ์เข้าถึงอินเทอร์เน็ตแก่ผู้ใช้ ให้ทํางานกับออบเจ็กต์ WifiNetworkSuggestion คุณสามารถเพิ่มและนำเครือข่ายที่ปรากฏในกล่องโต้ตอบการเลือกเครือข่ายที่เชื่อมต่ออัตโนมัติออกได้โดยเรียกใช้ addNetworkSuggestions() และ removeNetworkSuggestions() ตามลำดับ วิธีการเหล่านี้ไม่จําเป็นต้องใช้สิทธิ์เข้าถึงตําแหน่ง

API บางอย่างของโทรศัพท์ บลูทูธ และ Wi-Fi ต้องใช้สิทธิ์เข้าถึงตำแหน่งแบบละเอียด

หากแอปกำหนดเป้าหมายเป็น Android 10 ขึ้นไป แอปต้องมีสิทธิ์ ACCESS_FINE_LOCATION จึงจะใช้วิธีต่างๆ ใน Wi-Fi, Wi-Fi Aware หรือ Bluetooth API ได้ ส่วนต่อไปนี้จะแสดงคลาสและเมธอดที่ได้รับผลกระทบ

โทรศัพท์

Wi-Fi

บลูทูธ

สิทธิ์

ส่วนนี้อธิบายการอัปเดตโมเดลสิทธิ์ของ Android

จำกัดการเข้าถึงเนื้อหาในหน้าจอ

Android 10 จะป้องกันไม่ให้แอปเข้าถึงเนื้อหาบนหน้าจอของอุปกรณ์โดยอัตโนมัติโดยเปลี่ยนขอบเขตของสิทธิ์ READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT และ CAPTURE_SECURE_VIDEO_OUTPUT เพื่อปกป้องเนื้อหาบนหน้าจอของผู้ใช้ ตั้งแต่ Android 10 เป็นต้นไป สิทธิ์เหล่านี้จะเป็นสิทธิ์เข้าถึงลายเซ็นเท่านั้น

แอปที่ต้องเข้าถึงเนื้อหาบนหน้าจอของอุปกรณ์ควรใช้ MediaProjection API ซึ่งจะแสดงข้อความแจ้งให้ผู้ใช้ให้ความยินยอม

การตรวจสอบสิทธิ์ที่แสดงต่อผู้ใช้ในแอปเดิม

หากแอปกำหนดเป้าหมายเป็น Android 5.1 (API ระดับ 22) หรือต่ำกว่า ผู้ใช้จะเห็นหน้าจอสิทธิ์เมื่อใช้แอปในอุปกรณ์ที่ใช้ Android 10 ขึ้นไปเป็นครั้งแรก ดังที่แสดงในรูปที่ 1 หน้าจอนี้เปิดโอกาสให้ผู้ใช้เพิกถอนสิทธิ์เข้าถึงที่ระบบเคยให้สิทธิ์แก่แอปของคุณเมื่อติดตั้ง

จับภาพหน้าจอของกล่องโต้ตอบ
รูปที่ 1 กล่องโต้ตอบที่แสดงต่อผู้ใช้ซึ่งอนุญาตให้ตรวจสอบสิทธิ์เดิม

การจดจำกิจกรรมการเคลื่อนไหวร่างกาย

Android 10 เปิดตัวสิทธิ์รันไทม์ android.permission.ACTIVITY_RECOGNITION สำหรับแอปที่ต้องตรวจจับจำนวนก้าวของผู้ใช้หรือจัดประเภทกิจกรรมการเคลื่อนไหวร่างกายของผู้ใช้ เช่น การเดิน การปั่นจักรยาน หรือการเคลื่อนไหวในยานพาหนะ ฟีเจอร์นี้ออกแบบมาเพื่อให้ผู้ใช้เห็นวิธีที่ระบบใช้ข้อมูลเซ็นเซอร์ของอุปกรณ์ในการตั้งค่า

ไลบรารีบางอย่างในบริการ Google Play เช่น Activity Recognition API และ Google Fit API จะแสดงผลลัพธ์ก็ต่อเมื่อผู้ใช้ให้สิทธิ์นี้แก่แอปของคุณ

เซ็นเซอร์ในตัวเพียงอย่างเดียวในอุปกรณ์ที่คุณต้องประกาศสิทธิ์นี้ ได้แก่ เซ็นเซอร์ตัวนับก้าวและเครื่องตรวจจับการเดิน

หากแอปกำหนดเป้าหมายเป็น Android 9 (API ระดับ 28) หรือต่ำกว่า ระบบจะมอบสิทธิ์ android.permission.ACTIVITY_RECOGNITION ให้กับแอปโดยอัตโนมัติตามที่จำเป็น หากแอปเป็นไปตามเงื่อนไขต่อไปนี้

  • ไฟล์ Manifest รวมสิทธิ์ com.google.android.gms.permission.ACTIVITY_RECOGNITION ไว้ด้วย
  • ไฟล์ Manifest ไม่มีสิทธิ์ android.permission.ACTIVITY_RECOGNITION

หากระบบให้สิทธิ์ android.permission.ACTIVITY_RECOGNITION อัตโนมัติ แอปของคุณจะยังคงมีสิทธิ์ดังกล่าวหลังจากอัปเดตแอปเพื่อกำหนดเป้าหมายเป็น Android 10 อย่างไรก็ตาม ผู้ใช้สามารถเพิกถอนสิทธิ์นี้ได้ทุกเมื่อในการตั้งค่าระบบ

นำกลุ่มสิทธิ์ออกจาก UI แล้ว

ตั้งแต่ Android 10 เป็นต้นไป แอปจะค้นหาวิธีจัดกลุ่มสิทธิ์ใน UI ไม่ได้