แอปที่ใช้บริการตำแหน่งต้องขอสิทธิ์เข้าถึงตำแหน่งเพื่อปกป้องความเป็นส่วนตัวของผู้ใช้
เมื่อขอสิทธิ์เข้าถึงตำแหน่ง ให้ทำตามแนวทางปฏิบัติแนะนำเดียวกันกับที่ควรทำสำหรับสิทธิ์รันไทม์อื่นๆ ความแตกต่างที่สําคัญอย่างหนึ่งเกี่ยวกับสิทธิ์เข้าถึงตําแหน่งคือระบบมีสิทธิ์หลายรายการที่เกี่ยวข้องกับตําแหน่ง สิทธิ์ที่คุณขอและวิธีส่งคำขอจะขึ้นอยู่กับข้อกำหนดสถานที่ตั้งสำหรับกรณีการใช้งานของแอป
หน้านี้จะอธิบายข้อกำหนดด้านสถานที่ตั้งประเภทต่างๆ และให้คำแนะนำเกี่ยวกับวิธีขอสิทธิ์เข้าถึงตำแหน่งในแต่ละกรณี
ประเภทการเข้าถึงตำแหน่ง
สิทธิ์แต่ละรายการมีลักษณะดังต่อไปนี้ร่วมกัน
- หมวดหมู่: ตำแหน่งในเบื้องหน้าหรือตำแหน่งในเบื้องหลัง
- ความแม่นยำ: ตำแหน่งที่แน่นอนหรือตำแหน่งโดยประมาณ
ตำแหน่งเบื้องหน้า
หากแอปมีฟีเจอร์ที่แชร์หรือรับข้อมูลตำแหน่งเพียงครั้งเดียวหรือเป็นระยะเวลาที่กําหนดไว้ ฟีเจอร์ดังกล่าวจําเป็นต้องเข้าถึงตําแหน่งในเบื้องหน้า ตัวอย่างบางส่วนมีดังนี้
- ฟีเจอร์ภายในแอปการนำทางช่วยให้ผู้ใช้ขอเส้นทางแบบเลี้ยวต่อเลี้ยวได้
- ฟีเจอร์ในแอปการรับส่งข้อความช่วยให้ผู้ใช้แชร์ตำแหน่งปัจจุบันกับผู้ใช้รายอื่นได้
ระบบจะพิจารณาว่าแอปกำลังใช้ตําแหน่งในเบื้องหน้า หากฟีเจอร์ของแอปเข้าถึงตําแหน่งปัจจุบันของอุปกรณ์ในรูปแบบใดรูปแบบหนึ่งต่อไปนี้
- คุณจะเห็นกิจกรรมที่เป็นของแอป
แอปของคุณกำลังใช้บริการที่ทำงานอยู่เบื้องหน้า เมื่อบริการที่ทำงานอยู่เบื้องหน้าทำงานอยู่ ระบบจะแจ้งให้ผู้ใช้ทราบด้วยการแสดงการแจ้งเตือนแบบถาวร แอปของคุณยังคงเข้าถึงได้อยู่เมื่อวางแอปในเบื้องหลัง เช่น เมื่อผู้ใช้กดปุ่มหน้าแรกบนอุปกรณ์หรือปิดหน้าจอของอุปกรณ์
นอกจากนี้ เราขอแนะนำให้คุณประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้าเป็น
location
ดังที่แสดงในข้อมูลโค้ดต่อไปนี้ ใน Android 10 (API ระดับ 29) ขึ้นไป คุณต้องประกาศประเภทบริการที่ทำงานอยู่เบื้องหน้านี้<!-- Recommended for Android 9 (API level 28) and lower. --> <!-- Required for Android 10 (API level 29) and higher. --> <service android:name="MyNavigationService" android:foregroundServiceType="location" ... > <!-- Any inner elements would go here. --> </service>
คุณประกาศความต้องการตำแหน่งในเบื้องหน้าเมื่อแอปขอสิทธิ์ ACCESS_COARSE_LOCATION
หรือสิทธิ์ ACCESS_FINE_LOCATION
ดังที่แสดงในข้อมูลโค้ดต่อไปนี้
<manifest ... > <!-- Always include this permission --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- Include only if your app benefits from precise location access. --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> </manifest>
ตำแหน่งในเบื้องหลัง
แอปต้องใช้สิทธิ์เข้าถึงตำแหน่งในเบื้องหลังหากฟีเจอร์ภายในแอปแชร์ตำแหน่งกับผู้ใช้รายอื่นอย่างต่อเนื่องหรือใช้ Geofencing ตัวอย่างบางส่วนมีดังนี้
- ภายในแอปการแชร์ตำแหน่งของครอบครัว ฟีเจอร์หนึ่งจะอนุญาตให้ผู้ใช้แชร์ตำแหน่งกับสมาชิกในครอบครัวอย่างต่อเนื่อง
- ภายในแอป IoT ฟีเจอร์หนึ่งจะอนุญาตให้ผู้ใช้กำหนดค่าอุปกรณ์ในบ้านให้ปิดเมื่อผู้ใช้ออกจากบ้านและเปิดอีกครั้งเมื่อผู้ใช้กลับถึงบ้าน
ระบบจะถือว่าแอปของคุณใช้ตำแหน่งในเบื้องหลังหากแอปเข้าถึงตำแหน่งปัจจุบันของอุปกรณ์ในสถานการณ์อื่นนอกเหนือจากที่อธิบายไว้ในส่วนตำแหน่งในเบื้องหน้า ความแม่นยำของตำแหน่งในเบื้องหลังจะเหมือนกับความแม่นยำของตำแหน่งในเบื้องหน้า ซึ่งขึ้นอยู่กับสิทธิ์เข้าถึงตำแหน่งที่แอปของคุณประกาศ
ใน Android 10 (API ระดับ 29) ขึ้นไป คุณต้องประกาศสิทธิ์ ACCESS_BACKGROUND_LOCATION
ในไฟล์ Manifest ของแอปเพื่อขอสิทธิ์เข้าถึงตำแหน่งในเบื้องหลังขณะรันไทม์ ใน Android เวอร์ชันก่อนหน้า เมื่อแอปเข้าถึงตำแหน่งในเบื้องหน้า ก็จะได้รับสิทธิ์เข้าถึงตำแหน่งในเบื้องหลังโดยอัตโนมัติเช่นกัน
<manifest ... > <!-- Required only when requesting background location access on Android 10 (API level 29) and higher. --> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> </manifest>
ความถูกต้อง
Android รองรับระดับความแม่นยำของตำแหน่งต่อไปนี้
- โดยประมาณ
- แสดงตำแหน่งอุปกรณ์โดยประมาณ หากค่าประมาณตำแหน่งนี้มาจาก
LocationManagerService
หรือFusedLocationProvider
ค่าประมาณนี้จะมีความแม่นยำภายในประมาณ 3 ตารางกิโลเมตร (ประมาณ 1.2 ตารางไมล์) แอปของคุณจะได้รับตำแหน่งที่มีความแม่นยำระดับนี้เมื่อคุณประกาศสิทธิ์ACCESS_COARSE_LOCATION
แต่ไม่ได้ประกาศสิทธิ์ACCESS_FINE_LOCATION
- แน่นอน
- แสดงตำแหน่งอุปกรณ์โดยประมาณที่แม่นยำที่สุด หากค่าประมาณตำแหน่งมาจาก
LocationManagerService
หรือFusedLocationProvider
โดยทั่วไปค่าประมาณนี้จะอยู่ภายในประมาณ 50 เมตร (160 ฟุต) และบางครั้งจะแม่นยำถึงภายในไม่กี่เมตร (10 ฟุต) หรือแม่นยำกว่านั้น แอปของคุณจะรับตำแหน่งที่มีความแม่นยำระดับนี้ได้เมื่อคุณประกาศสิทธิ์ACCESS_FINE_LOCATION
หากผู้ใช้ให้สิทธิ์เข้าถึงตำแหน่งโดยประมาณ แอปของคุณจะมีสิทธิ์เข้าถึงเฉพาะตำแหน่งโดยประมาณเท่านั้น ไม่ว่าแอปจะประกาศสิทธิ์เข้าถึงตำแหน่งใดก็ตาม
แอปของคุณควรยังทำงานได้เมื่อผู้ใช้ให้สิทธิ์เข้าถึงตำแหน่งโดยประมาณเท่านั้น หากฟีเจอร์ในแอปจำเป็นต้องเข้าถึงตำแหน่งที่แน่นอนโดยใช้สิทธิ์ ACCESS_FINE_LOCATION
จริงๆ คุณสามารถขอให้ผู้ใช้อนุญาตให้แอปเข้าถึงตำแหน่งที่แน่นอน
ขอสิทธิ์เข้าถึงตำแหน่งเมื่อรันไทม์
เมื่อฟีเจอร์ในแอปของคุณต้องใช้สิทธิ์เข้าถึงตำแหน่ง ให้รอจนกว่าผู้ใช้จะโต้ตอบกับฟีเจอร์นั้นก่อนที่จะส่งคำขอสิทธิ์ เวิร์กโฟลว์นี้เป็นไปตามแนวทางปฏิบัติแนะนำในการขอสิทธิ์รันไทม์ในบริบท ตามที่อธิบายไว้ในคู่มือที่อธิบายวิธีขอสิทธิ์สำหรับแอป
รูปที่ 1 แสดงตัวอย่างวิธีดำเนินการตามกระบวนการนี้ แอปมี ฟีเจอร์ "แชร์ตำแหน่ง" ที่ต้องเข้าถึงตำแหน่งในเบื้องหน้า อย่างไรก็ตาม แอปจะไม่ขอสิทธิ์เข้าถึงตำแหน่งจนกว่าผู้ใช้จะเลือกปุ่มแชร์ตำแหน่ง
ผู้ใช้ให้สิทธิ์ได้เฉพาะตำแหน่งโดยประมาณ
ใน Android 12 (API ระดับ 31) ขึ้นไป ผู้ใช้จะขอให้แอปของคุณดึงข้อมูลตำแหน่งโดยประมาณเท่านั้นได้ แม้ว่าแอปจะขอสิทธิ์รันไทม์ ACCESS_FINE_LOCATION
ก็ตาม
หากต้องการจัดการพฤติกรรมที่ผู้ใช้อาจทำเช่นนี้ อย่าขอสิทธิ์ ACCESS_FINE_LOCATION
เพียงอย่างเดียว แต่ให้ขอทั้งสิทธิ์ ACCESS_FINE_LOCATION
และสิทธิ์ ACCESS_COARSE_LOCATION
ในคำขอรันไทม์เดียว หากพยายามขอเฉพาะ ACCESS_FINE_LOCATION
ระบบจะไม่สนใจคำขอใน Android 12 บางรุ่น หากแอปกำหนดเป้าหมายเป็น Android 12 ขึ้นไป ระบบจะบันทึกข้อความแสดงข้อผิดพลาดต่อไปนี้ใน Logcat
ACCESS_FINE_LOCATION must be requested with ACCESS_COARSE_LOCATION.
เมื่อแอปขอทั้ง ACCESS_FINE_LOCATION
และ ACCESS_COARSE_LOCATION
กล่องโต้ตอบสิทธิ์ของระบบจะมีตัวเลือกต่อไปนี้ให้ผู้ใช้
- แม่นยํา: อนุญาตให้แอปได้รับข้อมูลตำแหน่งที่แน่นอน
- โดยประมาณ: อนุญาตให้แอปรับเฉพาะข้อมูลตำแหน่งโดยประมาณ
รูปที่ 3 แสดงว่ากล่องโต้ตอบมีภาพบอกใบ้สำหรับทั้ง 2 ตัวเลือกเพื่อช่วยผู้ใช้เลือก หลังจากเลือกความแม่นยำของตำแหน่งแล้ว ผู้ใช้แตะปุ่มใดปุ่มหนึ่งจาก 3 ปุ่มเพื่อเลือกระยะเวลาการให้สิทธิ์
ใน Android 12 ขึ้นไป ผู้ใช้สามารถไปที่การตั้งค่าระบบเพื่อตั้งค่าความแม่นยำของตำแหน่งที่ต้องการสำหรับแอปใดก็ได้ โดยไม่คำนึงถึงเวอร์ชัน SDK เป้าหมายของแอปนั้น การดำเนินการนี้จะยังคงมีผลอยู่แม้ว่าผู้ใช้จะติดตั้งแอปในอุปกรณ์ที่ใช้ Android 11 หรือต่ำกว่า และอัปเกรดอุปกรณ์เป็น Android 12 ขึ้นไปก็ตาม
ตัวเลือกของผู้ใช้ส่งผลต่อการให้สิทธิ์
ตารางต่อไปนี้แสดงสิทธิ์ที่ระบบให้แอปของคุณ โดยอิงตามตัวเลือกที่ผู้ใช้เลือกในกล่องโต้ตอบรันไทม์ของสิทธิ์
แน่นอน | โดยประมาณ | |
---|---|---|
ขณะใช้แอป | ACCESS_FINE_LOCATION และ ACCESS_COARSE_LOCATION |
ACCESS_COARSE_LOCATION |
เฉพาะครั้งนี้ | ACCESS_FINE_LOCATION และ ACCESS_COARSE_LOCATION |
ACCESS_COARSE_LOCATION |
ปฏิเสธ | ไม่มีสิทธิ์เข้าถึงตำแหน่ง | ไม่มีสิทธิ์เข้าถึงตำแหน่ง |
หากต้องการดูว่าระบบให้สิทธิ์ใดแก่แอปของคุณ ให้ตรวจสอบค่าที่แสดงผลของคำขอสิทธิ์ คุณสามารถใช้ไลบรารี Jetpack ในโค้ดที่คล้ายกับโค้ดต่อไปนี้ หรือจะใช้ไลบรารีของแพลตฟอร์มก็ได้ โดยคุณจัดการโค้ดคำขอสิทธิ์ด้วยตนเอง
Kotlin
val locationPermissionRequest = registerForActivityResult( ActivityResultContracts.RequestMultiplePermissions() ) { permissions -> when { permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> { // Precise location access granted. } permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> { // Only approximate location access granted. } else -> { // No location access granted. } } } // ... // Before you perform the actual permission request, check whether your app // already has the permissions, and whether your app needs to show a permission // rationale dialog. For more details, see Request permissions. locationPermissionRequest.launch(arrayOf( Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION))
Java
ActivityResultLauncher<String[]> locationPermissionRequest = registerForActivityResult(new ActivityResultContracts .RequestMultiplePermissions(), result -> { Boolean fineLocationGranted = result.getOrDefault( Manifest.permission.ACCESS_FINE_LOCATION, false); Boolean coarseLocationGranted = result.getOrDefault( Manifest.permission.ACCESS_COARSE_LOCATION,false); if (fineLocationGranted != null && fineLocationGranted) { // Precise location access granted. } else if (coarseLocationGranted != null && coarseLocationGranted) { // Only approximate location access granted. } else { // No location access granted. } } ); // ... // Before you perform the actual permission request, check whether your app // already has the permissions, and whether your app needs to show a permission // rationale dialog. For more details, see Request permissions. locationPermissionRequest.launch(new String[] { Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION });
ขออัปเกรดเป็นตำแหน่งที่แน่นอน
คุณขอให้ผู้ใช้อัปเกรดการเข้าถึงของแอปจากตำแหน่งโดยประมาณเป็นตำแหน่งที่แน่นอนได้ อย่างไรก็ตาม ก่อนที่จะขอให้ผู้ใช้อัปเกรดสิทธิ์เข้าถึงตำแหน่งที่แม่นยำของแอป ให้พิจารณาว่า Use Case ของแอปจำเป็นต้องใช้ความแม่นยำระดับนี้จริงๆ หรือไม่ หากแอปของคุณต้องจับคู่อุปกรณ์กับอุปกรณ์ที่อยู่ใกล้เคียงผ่านบลูทูธหรือ Wi-Fi ให้พิจารณาใช้การจับคู่อุปกรณ์ที่ใช้ร่วมกันหรือสิทธิ์บลูทูธแทนการขอสิทธิ์ ACCESS_FINE_LOCATION
หากต้องการขอให้ผู้ใช้อัปเกรดการเข้าถึงตำแหน่งของแอปจากสถานะโดยประมาณให้มีความแม่นยำ ให้ทำดังนี้
- หากจำเป็น ให้อธิบายเหตุผลที่แอปของคุณต้องใช้สิทธิ์
- ขอสิทธิ์
ACCESS_FINE_LOCATION
และACCESS_COARSE_LOCATION
ร่วมกันอีกครั้ง เนื่องจากผู้ใช้ได้อนุญาตให้ระบบมอบสิทธิ์เข้าถึงตำแหน่งโดยประมาณแก่แอปของคุณแล้ว กล่องโต้ตอบของระบบจึงแตกต่างออกไปในครั้งนี้ ดังที่แสดงในรูปที่ 4 และรูปที่ 5
ขอตำแหน่งเบื้องหน้าเท่านั้นในตอนแรก
แม้ว่าฟีเจอร์หลายรายการในแอปของคุณจะต้องเข้าถึงตำแหน่ง แต่ก็มีแนวโน้มว่าจะมีเพียงบางฟีเจอร์เท่านั้นที่จำเป็นต้องเข้าถึงตำแหน่งในเบื้องหลัง ดังนั้นขอแนะนำว่าแอปจะดำเนินการคำขอสิทธิ์เข้าถึงตำแหน่งเพิ่มขึ้น โดยขอสิทธิ์เข้าถึงตำแหน่งในเบื้องหน้าและขอสิทธิ์เข้าถึงตำแหน่งในเบื้องหลัง การใช้คำขอแบบเพิ่มทีละรายการจะช่วยให้ผู้ใช้มีการควบคุมและความโปร่งใสมากขึ้น เนื่องจากผู้ใช้จะเข้าใจได้ดียิ่งขึ้นว่าฟีเจอร์ใดในแอปจำเป็นต้องเข้าถึงตำแหน่งในเบื้องหลัง
รูปที่ 6 แสดงตัวอย่างแอปที่ออกแบบมาเพื่อจัดการคำขอที่เพิ่มขึ้น ทั้งฟีเจอร์ "แสดงตำแหน่งปัจจุบัน" และ "แนะนำสถานที่ใกล้เคียง" ต้องใช้สิทธิ์เข้าถึงตำแหน่งในเบื้องหน้า แต่มีเพียงฟีเจอร์ "แนะนำสถานที่ใกล้เคียง" เท่านั้นที่จำเป็นต้องเข้าถึงตำแหน่งในเบื้องหลัง
กระบวนการส่งคำขอเพิ่มมีดังนี้
-
ในตอนแรก แอปของคุณควรนำผู้ใช้ไปยังฟีเจอร์ที่ต้องเข้าถึงตำแหน่งในเบื้องหน้า เช่น ฟีเจอร์ "แชร์ตำแหน่ง" ในรูปที่ 1 หรือฟีเจอร์ "แสดงตำแหน่งปัจจุบัน" ในรูปที่ 2
เราขอแนะนำให้คุณปิดใช้สิทธิ์เข้าถึงฟีเจอร์ที่ต้องใช้การเข้าถึงตำแหน่งในเบื้องหลังจนกว่าแอปจะมีสิทธิ์เข้าถึงตำแหน่งในเบื้องหน้า
-
ในภายหลัง เมื่อผู้ใช้สำรวจฟังก์ชันการทำงานที่ต้องเข้าถึงตำแหน่งในเบื้องหลัง คุณสามารถขอสิทธิ์เข้าถึงตำแหน่งในเบื้องหลังได้
ขอตำแหน่งในเบื้องหลังหากจำเป็น
เนื้อหาของกล่องโต้ตอบสิทธิ์จะขึ้นอยู่กับเวอร์ชัน SDK เป้าหมาย
เมื่อฟีเจอร์ในแอปขอตำแหน่งในเบื้องหลังบนอุปกรณ์ที่ใช้ Android 10 (API ระดับ 29) กล่องโต้ตอบสิทธิ์ของระบบจะมีตัวเลือกชื่ออนุญาตตลอดเวลา หากผู้ใช้เลือกตัวเลือกนี้ ฟีเจอร์ในแอปของคุณจะได้รับสิทธิ์เข้าถึงตำแหน่งในเบื้องหลัง
อย่างไรก็ตาม ใน Android 11 (API ระดับ 30) ขึ้นไป กล่องโต้ตอบของระบบจะไม่มีตัวเลือกอนุญาตทุกครั้ง แต่ผู้ใช้ต้องเปิดใช้ตำแหน่งในเบื้องหลังในหน้าการตั้งค่าแทน ดังที่แสดงในรูปที่ 7
คุณสามารถช่วยให้ผู้ใช้ไปยังหน้าการตั้งค่านี้ได้โดยทําตามแนวทางปฏิบัติแนะนำเมื่อขอสิทธิ์เข้าถึงตําแหน่งในเบื้องหลัง กระบวนการให้สิทธิ์จะขึ้นอยู่กับเวอร์ชัน SDK เป้าหมายของแอป
แอปกำหนดเป้าหมายเป็น Android 11 ขึ้นไป
หากแอปไม่ได้รับสิทธิ์ ACCESS_BACKGROUND_LOCATION
และ shouldShowRequestPermissionRationale()
แสดงผลเป็น true
ให้แสดง UI ที่ให้ความรู้แก่ผู้ใช้ ซึ่งประกอบด้วยข้อมูลต่อไปนี้
- คำอธิบายที่ชัดเจนถึงเหตุผลที่ฟีเจอร์ของแอปจำเป็นต้องเข้าถึงตำแหน่งในเบื้องหลัง
- ป้ายกำกับที่ผู้ใช้มองเห็นของตัวเลือกการตั้งค่าที่ให้สิทธิ์เข้าถึงตำแหน่งในเบื้องหลัง (เช่น อนุญาตตลอดในรูปที่ 7) คุณสามารถโทรไปที่
getBackgroundPermissionOptionLabel()
เพื่อขอป้ายกำกับนี้ ค่าที่แสดงผลของเมธอดนี้จะแปลเป็นภาษาที่ผู้ใช้ต้องการในอุปกรณ์ - ตัวเลือกสำหรับผู้ใช้ในการปฏิเสธสิทธิ์ หากผู้ใช้ปฏิเสธการเข้าถึงตำแหน่งในเบื้องหลัง ผู้ใช้ก็ควรจะใช้แอปของคุณต่อไปได้
แอปกำหนดเป้าหมายเป็น Android 10 หรือต่ำกว่า
เมื่อฟีเจอร์ในแอปขอสิทธิ์เข้าถึงตำแหน่งในเบื้องหลัง ผู้ใช้จะเห็นกล่องโต้ตอบของระบบ กล่องโต้ตอบนี้มีตัวเลือกในการไปยังตัวเลือกสิทธิ์ของตำแหน่งในแอปในหน้าการตั้งค่า
ตราบใดที่แอปของคุณเป็นไปตามแนวทางปฏิบัติแนะนำในการขอสิทธิ์เข้าถึงตำแหน่งอยู่แล้ว คุณไม่จําเป็นต้องทําการเปลี่ยนแปลงใดๆ เพื่อรองรับลักษณะการทํางานนี้
ผู้ใช้ส่งผลต่อความแม่นยำของตำแหน่งในเบื้องหลังได้
หากผู้ใช้ขอตำแหน่งโดยประมาณ ตัวเลือกของผู้ใช้ในกล่องโต้ตอบสิทธิ์เข้าถึงตำแหน่งจะมีผลกับตำแหน่งในเบื้องหลังด้วย กล่าวคือ หากผู้ใช้ให้ACCESS_BACKGROUND_LOCATION
สิทธิ์แก่แอปของคุณ แต่ให้สิทธิ์เข้าถึงตำแหน่งโดยประมาณในเบื้องหน้าเท่านั้น แอปของคุณก็จะมีสิทธิ์เข้าถึงตำแหน่งโดยประมาณในเบื้องหลังด้วยเช่นกัน
การช่วยเตือนเกี่ยวกับการให้สิทธิ์เข้าถึงตำแหน่งในเบื้องหลัง
ใน Android 10 ขึ้นไป เมื่อฟีเจอร์ในแอปเข้าถึงตำแหน่งของอุปกรณ์ในเบื้องหลังเป็นครั้งแรกหลังจากที่ผู้ใช้ให้สิทธิ์เข้าถึงตำแหน่งในเบื้องหลัง ระบบจะกำหนดเวลาการแจ้งเตือนที่จะส่งไปยังผู้ใช้ การแจ้งเตือนนี้จะเตือนผู้ใช้ว่าตนได้อนุญาตให้แอปของคุณเข้าถึงตำแหน่งของอุปกรณ์ตลอดเวลา ตัวอย่างการแจ้งเตือนจะปรากฏในรูปที่ 8
ตรวจสอบข้อกำหนดด้านตำแหน่งใน SDK ที่ใช้ร่วมกันของแอป
ตรวจสอบว่าแอปของคุณใช้ SDK ที่อาศัยสิทธิ์เข้าถึงตำแหน่งหรือไม่ โดยเฉพาะสิทธิ์ ACCESS_FINE_LOCATION
อ่านบทความนี้ใน Medium เกี่ยวกับการทำความรู้จักกับลักษณะการทํางานของ Dependency ของ SDK
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์เข้าถึงตำแหน่งใน Android ได้จากเนื้อหาต่อไปนี้
Codelabs
วิดีโอ
ตัวอย่าง
- แอปตัวอย่างเพื่อสาธิตการใช้สิทธิ์เข้าถึงตำแหน่ง