Android 10 (API ระดับ 29) มีการเปิดตัวฟีเจอร์และการเปลี่ยนแปลงลักษณะการทำงานหลายอย่าง เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้ให้ดียิ่งขึ้น การเปลี่ยนแปลงเหล่านี้จะขยายความโปร่งใสและ การควบคุมที่ผู้ใช้มีต่อข้อมูลของตนเอง รวมถึงความสามารถที่ผู้ใช้มอบให้แก่แอป ฟีเจอร์เหล่านี้อาจส่งผลให้ลักษณะการทำงานหรือข้อมูลบางอย่างที่แอปของคุณ อิงอยู่อาจทำงานแตกต่างจากแพลตฟอร์มเวอร์ชันเก่า ผลกระทบต่อแอปควรมีน้อยที่สุดหากแอปของคุณปฏิบัติตามแนวทางปฏิบัติแนะนำปัจจุบันสำหรับการจัดการข้อมูลผู้ใช้
หน้านี้จะแสดงสรุปการเปลี่ยนแปลงแต่ละรายการ
การเปลี่ยนแปลงสูงสุด
ส่วนนี้จะกล่าวถึงการเปลี่ยนแปลงที่สำคัญใน Android 10 ที่เกี่ยวข้องกับ ความเป็นส่วนตัว
การเข้าถึงพื้นที่เก็บข้อมูลภายนอกที่กำหนดขอบเขตไว้สำหรับไฟล์และสื่อของแอป
โดยค่าเริ่มต้น แอปที่กำหนดเป้าหมายเป็น Android 10 ขึ้นไปจะได้รับการเข้าถึงแบบจำกัดขอบเขตในพื้นที่เก็บข้อมูลภายนอก หรือพื้นที่เก็บข้อมูลที่จำกัดขอบเขต แอปดังกล่าวจะดูไฟล์ประเภทต่อไปนี้ภายในอุปกรณ์จัดเก็บข้อมูลภายนอกได้โดยไม่ต้องขอสิทธิ์ของผู้ใช้ที่เกี่ยวข้องกับพื้นที่เก็บข้อมูล
- ไฟล์ในไดเรกทอรีเฉพาะของแอป ซึ่งเข้าถึงได้โดยใช้
getExternalFilesDir()
- รูปภาพ วิดีโอ และคลิปเสียงที่แอปสร้างจากคลังสื่อ
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Scoped Storage รวมถึงวิธีแชร์ เข้าถึง และแก้ไข ไฟล์ที่บันทึกไว้ในอุปกรณ์จัดเก็บข้อมูลภายนอกได้ที่คำแนะนำเกี่ยวกับวิธี จัดการไฟล์ในพื้นที่เก็บข้อมูลภายนอกและ เข้าถึงและแก้ไขไฟล์สื่อ
การเข้าถึงตำแหน่งอุปกรณ์ในเบื้องหลังต้องได้รับสิทธิ์
Android 10 ได้เปิดตัวสิทธิ์
ACCESS_BACKGROUND_LOCATION
เพื่อรองรับการควบคุมเพิ่มเติมที่ผู้ใช้มีต่อการเข้าถึง
ข้อมูลตำแหน่งของแอป
สิทธิ์ ACCESS_BACKGROUND_LOCATION
จะมีผลต่อสิทธิ์เข้าถึงตำแหน่งของแอปเมื่อแอปทำงานในเบื้องหลังเท่านั้น ซึ่งแตกต่างจากสิทธิ์
ACCESS_FINE_LOCATION
และ
ACCESS_COARSE_LOCATION
ระบบจะถือว่าแอป
เข้าถึงตำแหน่งในเบื้องหลัง เว้นแต่จะตรงตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้
- กิจกรรมที่เป็นของแอปจะปรากฏ
แอปกำลังเรียกใช้บริการที่ทำงานอยู่เบื้องหน้าซึ่งประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้าเป็น
location
หากต้องการประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้าสำหรับบริการในแอป ให้ตั้งค่า
targetSdkVersion
หรือcompileSdkVersion
ของแอปเป็น29
ขึ้นไป ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่บริการที่ทำงานอยู่เบื้องหน้าสามารถดำเนินการที่ผู้ใช้เริ่มต้น ไว้ต่อ ซึ่งต้องมีการเข้าถึงตำแหน่ง
หากแอปสร้างและตรวจสอบ Geofence และกำหนดเป้าหมายเป็น 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 และหมายเลขซีเรียล
วิธีการที่ได้รับผลกระทบมีดังนี้
Build
TelephonyManager
หากแอปไม่มีสิทธิ์และคุณพยายามขอข้อมูลเกี่ยวกับ ตัวระบุที่รีเซ็ตไม่ได้ แพลตฟอร์มจะตอบกลับตาม SDK เวอร์ชันเป้าหมาย
- หากแอปกำหนดเป้าหมายเป็น Android 10 ขึ้นไป จะเกิด
SecurityException
- หากแอปกำหนดเป้าหมายเป็น Android 9 (API ระดับ 28) หรือต่ำกว่า เมธอดจะแสดงผล
null
หรือข้อมูลตัวยึดตำแหน่งหากแอปมีสิทธิ์READ_PHONE_STATE
มิเช่นนั้นจะเกิดSecurityException
กรณีการใช้งานหลายอย่างไม่จำเป็นต้องใช้ตัวระบุอุปกรณ์ที่รีเซ็ตไม่ได้ เช่น หากแอปใช้ตัวระบุอุปกรณ์ที่รีเซ็ตไม่ได้เพื่อการติดตามโฆษณาหรือการวิเคราะห์ผู้ใช้ ให้ใช้ตัวระบุโฆษณา Android แทนสำหรับกรณีการใช้งานดังกล่าว ดูข้อมูลเพิ่มเติมได้ที่แนวทางปฏิบัติแนะนำสำหรับ ตัวระบุที่ไม่ซ้ำกัน
การเข้าถึงข้อมูลในคลิปบอร์ดแบบจำกัด
เว้นแต่แอปของคุณจะเป็นโปรแกรมแก้ไขวิธีการป้อนข้อมูล (IME) เริ่มต้นหรือเป็นแอปที่ มีโฟกัสอยู่ในปัจจุบัน แอปของคุณจะเข้าถึงข้อมูลในคลิปบอร์ดบน Android 10 ขึ้นไปไม่ได้
การปกป้องหมายเลขซีเรียลของอุปกรณ์ 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
จึงจะใช้วิธีการต่างๆ ภายใน API ของ Wi-Fi, Wi-Fi Aware
หรือบลูทูธได้ ส่วนต่อไปนี้แสดงรายการคลาสและเมธอดที่ได้รับผลกระทบ
โทรศัพท์
TelephonyManager
getCellLocation()
getAllCellInfo()
requestNetworkScan()
requestCellInfoUpdate()
getAvailableNetworks()
getServiceState()
TelephonyScanManager
requestNetworkScan()
TelephonyScanManager.NetworkScanCallback
onResults()
PhoneStateListener
onCellLocationChanged()
onCellInfoChanged()
onServiceStateChanged()
Wi-Fi
WifiManager
startScan()
getScanResults()
getConnectionInfo()
getConfiguredNetworks()
WifiAwareManager
WifiP2pManager
WifiRttManager
บลูทูธ
BluetoothAdapter
startDiscovery()
startLeScan()
BluetoothAdapter.LeScanCallback
BluetoothLeScanner
startScan()
สิทธิ์
ส่วนนี้อธิบายการอัปเดตโมเดลสิทธิ์ของ Android
จำกัดสิทธิ์เข้าถึงเนื้อหาในหน้าจอ
Android 10 จะป้องกันการเข้าถึงเนื้อหาบนหน้าจอของอุปกรณ์โดยไม่แจ้งให้ทราบด้วยการเปลี่ยนขอบเขตของสิทธิ์ READ_FRAME_BUFFER
, CAPTURE_VIDEO_OUTPUT
และ CAPTURE_SECURE_VIDEO_OUTPUT
เพื่อปกป้องเนื้อหาบนหน้าจอของผู้ใช้ ตั้งแต่ Android 10 เป็นต้นมา สิทธิ์เหล่านี้จะเป็นsignature-access
เท่านั้น
แอปที่ต้องการเข้าถึงเนื้อหาบนหน้าจอของอุปกรณ์ควรใช้
MediaProjection
API ซึ่งจะแสดงข้อความแจ้งที่ขอให้ผู้ใช้ให้ความยินยอม
การตรวจสอบสิทธิ์ที่แสดงต่อผู้ใช้ในแอปเดิม
หากแอปกำหนดเป้าหมายเป็น Android 5.1 (API ระดับ 22) หรือต่ำกว่า ผู้ใช้จะเห็นหน้าจอการให้สิทธิ์ เมื่อใช้แอปในอุปกรณ์ที่ใช้ Android 10 หรือ สูงกว่าเป็นครั้งแรก ดังที่แสดงในรูปที่ 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 ไม่ได้