Truy cập vào thông tin vị trí khi ở chế độ nền
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Như đã mô tả trên các trang về yêu cầu quyền truy cập thông tin vị trí và các phương pháp hay nhất về quyền riêng tư, ứng dụng chỉ nên yêu cầu loại quyền truy cập vị trí quan trọng đối với tính năng người dùng trực tiếp sử dụng và cần tiết lộ về điều này cho người dùng theo cách phù hợp. Phần lớn trường hợp sử dụng chỉ yêu cầu thông tin vị trí khi người dùng đang sử dụng ứng dụng. Nếu ứng dụng yêu cầu quyền truy cập thông tin vị trí ở chế độ nền (chẳng hạn như khi triển khai tính năng khoanh vùng địa lý), hãy đảm bảo rằng tính năng này quan trọng đối với chức năng cốt lõi của ứng dụng, mang lại lợi ích rõ ràng cho người dùng và được thực hiện theo cách rõ ràng.
Lưu ý: Cửa hàng Google Play đã cập nhật chính sách liên quan đến vị trí của thiết bị, chỉ cấp quyền truy cập thông tin vị trí ở chế độ nền cho các ứng dụng cần quyền này để thực hiện chức năng cốt lõi và đáp ứng các yêu cầu liên quan của chính sách. Việc áp dụng các phương pháp hay nhất này không đảm bảo rằng Google Play sẽ phê duyệt cách ứng dụng sử dụng vị trí ở chế độ nền.
Tìm hiểu thêm về những thay đổi về chính sách liên quan đến vị trí của thiết bị.
Danh sách kiểm tra quyền truy cập vị trí ở chế độ nền
Sử dụng danh sách kiểm tra sau đây để xác định logic truy cập thông tin vị trí tiềm năng ở chế độ nền:
Trong tệp kê khai của ứng dụng, hãy kiểm tra quyền ACCESS_COARSE_LOCATION
và quyền ACCESS_FINE_LOCATION
.
Xác định rằng ứng dụng yêu cầu các quyền về vị trí này.
- Nếu ứng dụng của bạn dành cho Android 10 (API cấp 29) trở lên, hãy kiểm tra quyền
ACCESS_BACKGROUND_LOCATION
.
Xác định rằng ứng dụng có tính năng yêu cầu quyền này.
Tìm kiếm trường hợp sử dụng các API quyền truy cập thông tin vị trí, chẳng hạn như API trình cung cấp vị trí kết hợp, API khoanh vùng địa lý hoặc API LocationManager trong mã, chẳng hạn như trong các cấu trúc sau:
Nếu ứng dụng sử dụng SDK hoặc thư viện truy cập thông tin vị trí, thì quyền truy cập này sẽ được ghi nhận cho ứng dụng. Để xác định xem SDK hoặc thư viện có cần quyền truy cập thông tin vị trí hay không, hãy tham khảo tài liệu về thư viện.
Đánh giá quyền truy cập thông tin vị trí ở chế độ nền
Nếu bạn thấy rằng ứng dụng truy cập thông tin vị trí ở chế độ nền, hãy cân nhắc thực hiện những hành động sau:
- Đánh giá xem quyền truy cập thông tin vị trí ở chế độ nền có quan trọng đối với chức năng cốt lõi của ứng dụng hay không.
Nếu bạn không cần quyền truy cập vị trí ở chế độ nền, hãy xoá quyền truy cập vị trí ở chế độ nền.
Nếu ứng dụng của bạn dành cho Android 10 (API cấp 29) trở lên, hãy xoá quyền ACCESS_BACKGROUND_LOCATION
khỏi tệp kê khai ứng dụng. Khi xoá quyền này, bạn sẽ xoá tuỳ chọn quyền truy cập vào thông tin vị trí mọi lúc cho ứng dụng trên các thiết bị chạy Android 10.
Hãy đảm bảo người dùng biết rằng ứng dụng đang truy cập thông tin vị trí ở chế độ nền. Điều này đặc biệt quan trọng đối với các trường hợp không rõ ràng đối với người dùng.
Nếu có thể, hãy tái cấu trúc logic quyền truy cập thông tin vị trí để chỉ yêu cầu thông tin vị trí khi người dùng nhìn thấy hoạt động của ứng dụng.
Việc cập nhật vị trí ở chế độ nền bị hạn chế
Nếu ứng dụng cần quyền truy cập thông tin vị trí ở chế độ nền, hãy lưu ý rằng Android bảo toàn thời lượng pin cho thiết bị bằng cách đặt giới hạn về quyền truy cập thông tin vị trí ở chế độ nền trên các thiết bị chạy Android 8.0 (API cấp 26) trở lên. Trên các phiên bản Android này, nếu đang chạy ở chế độ nền thì ứng dụng chỉ có thể nhận được thông tin cập nhật vị trí vài lần mỗi giờ. Tìm hiểu thêm về giới hạn về quyền truy cập thông tin vị trí ở chế độ nền.
Tài nguyên khác
Để tìm hiểu thêm về cách sử dụng quyền truy cập vị trí ở chế độ nền, hãy xem các tài liệu sau:
Video
Cách tìm trường hợp có thể sử dụng quyền truy cập thông tin vị trí ở chế độ nền
Mẫu
Mẫu minh hoạ các phương pháp hay nhất để truy cập thông tin vị trí khi ứng dụng chạy ở chế độ nền.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# Access location in the background\n\nAs described on the [request location\npermissions](/training/location/permissions) and [privacy best\npractices](/privacy/best-practices) pages, apps should only ask for the type of\nlocation permission that's critical to the user-facing feature, and properly\ndisclose this to users. The majority of use cases only require location when the\nuser is engaging with the app. If your app requires background location, such as\nwhen implementing geofencing, make sure that it's critical to the core\nfunctionality of the app, offers clear benefits to the user, and is done in a\nway that's obvious to them. \n**Note:** The Google Play store has updated its policy concerning device\nlocation, restricting background location access to apps that need it for\ntheir core functionality and meet related policy requirements. Adopting these\nbest practices doesn't guarantee Google Play approves your app's usage of\nlocation in the background.\n\nLearn more about the\n[policy\nchanges](https://support.google.com/googleplay/android-developer/answer/9799150) related to device location.\n\nBackground location access checklist\n------------------------------------\n\nUse the following checklist to identify potential location access logic in the\nbackground:\n\n- In your app's manifest, check for the\n [`ACCESS_COARSE_LOCATION` permission](/reference/android/Manifest.permission#ACCESS_COARSE_LOCATION)\n and the\n [`ACCESS_FINE_LOCATION` permission](/reference/android/Manifest.permission#ACCESS_FINE_LOCATION).\n Verify that your app requires these location permissions.\n\n - If your app targets Android 10 (API level 29) or higher, also check for the [`ACCESS_BACKGROUND_LOCATION`\n permission](/training/location/receive-location-updates#request-background-location). Verify that your app has a feature that requires it.\n- Look for use of location access APIs, such as the [Fused Location Provider\n API](https://developers.google.com/location-context/fused-location-provider),\n [Geofencing API](https://developers.google.com/location-context/geofencing), or\n [LocationManager API](/reference/android/location/LocationManager), within your\n code such as in the following constructs:\n\n - [Background services](/training/run-background-service/create-service)\n - [`JobIntentService`](/reference/kotlin/androidx/core/app/JobIntentService) objects\n - [`WorkManager`](/reference/kotlin/androidx/work/WorkManager) or [`JobScheduler`](/reference/kotlin/android/app/job/JobScheduler) tasks\n - [`AlarmManager`](/reference/kotlin/android/app/AlarmManager) operations\n - Pending intents that are invoked from an [app\n widget](/guide/topics/appwidgets)\n- If your app uses an SDK or library that accesses location, this access is\n attributed to your app. To determine whether an SDK or library needs location\n access, consult the library's documentation.\n\nEvaluate background location access\n-----------------------------------\n\nIf you find that your app accesses location in the background, consider taking\nthe following actions:\n\n- Evaluate whether background location access is critical to the core functionality of the app.\n- If you don't need location access in the background, remove it.\n\n If your app targets Android 10 (API level 29) or higher, remove the\n [`ACCESS_BACKGROUND_LOCATION`\n permission](/training/location/receive-location-updates#request-background-location)\n from your app's manifest. When you remove this permission, all-the-time\n access to location isn't an option for the app on devices that run\n Android 10.\n- Make sure the user is aware that your app is accessing location in the\n background. This is especially important for cases that aren't obvious to users.\n\n- If possible, [refactor your location access\n logic](/about/versions/oreo/background-location-limits#tuning-behavior) so that\n you request location only when your app's activity is visible to users.\n\nLimited updates to background location\n--------------------------------------\n\nIf background location access is essential for your app, keep in mind that\nAndroid preserves device battery life by setting *background location\nlimits* on devices that run Android 8.0 (API level 26) and higher. On these\nversions of Android, if your app is running in the background, it can receive\nlocation updates only a few times each hour. Learn more about [background\nlocation limits](/about/versions/oreo/background-location-limits).\n\nAdditional resources\n--------------------\n\nTo learn more about background location usage, view the following materials:\n\n### Videos\n\n[How to find possible background location\nusage](https://www.youtube.com/watch?v=xTVeFJZQ28c)\n\n### Samples\n\n[Sample](https://github.com/android/platform-samples/tree/main/samples/location/src/main/java/com/example/platform/location/bglocationaccess)\nto demonstrate best practices for accessing location when app is in background."]]