Yêu cầu quyền truy cập thông tin vị trí ở 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.
Trang này thảo luận về những nội dung sau:
Cách yêu cầu quyền truy cập thông tin vị trí ở chế độ nền.
Cách xử lý yêu cầu dựa trên phiên bản SDK mục tiêu của ứng dụng.
Cách lựa chọn ưu tiên của người dùng đối với thông tin vị trí gần đúng ảnh hưởng đến cách ứng dụng của bạn nhận thông tin vị trí ở chế độ nền.
Hình 7. Trang Cài đặt có một tuỳ chọn tên là Luôn cho phép. Tuỳ chọn này cấp quyền truy cập thông tin vị trí ở chế độ nền.
Nội dung của hộp thoại cấp quyền phụ thuộc vào phiên bản SDK mục tiêu
Khi một tính năng trong ứng dụng của bạn yêu cầu quyền truy cập thông tin vị trí ở chế độ nền trên một thiết bị chạy Android 10 (API cấp 29), hộp thoại cấp quyền của hệ thống sẽ bao gồm một tuỳ chọn có tên là Luôn cho phép. Nếu người dùng chọn tuỳ chọn này, tính năng trong ứng dụng của bạn sẽ có quyền truy cập thông tin vị trí ở chế độ nền.
Tuy nhiên, trên Android 11 (API cấp 30) trở lên, hộp thoại của hệ thống sẽ không bao gồm tuỳ chọn Luôn cho phép. Thay vào đó, người dùng phải bật quyền truy cập thông tin vị trí ở chế độ nền trên trang cài đặt, như minh hoạ trong hình 7.
Bạn có thể giúp người dùng chuyển đến trang cài đặt này bằng cách làm theo các phương pháp hay nhất khi yêu cầu quyền truy cập thông tin vị trí ở chế độ nền. Quy trình cấp quyền này phụ thuộc vào phiên bản SDK mục tiêu của ứng dụng.
Ứng dụng nhắm đến Android 11 trở lên
Nếu ứng dụng của bạn chưa được cấp quyền ACCESS_BACKGROUND_LOCATION và shouldShowRequestPermissionRationale() trả về true, hãy hiển thị cho người dùng một giao diện người dùng hướng dẫn bao gồm:
Nội dung giải thích rõ lý do tính năng của ứng dụng cần quyền truy cập thông tin vị trí ở chế độ nền.
Nhãn mà người dùng nhìn thấy của chế độ cài đặt cấp quyền truy cập thông tin vị trí ở chế độ nền (ví dụ: Luôn cho phép trong hình 7). Bạn có thể gọi getBackgroundPermissionOptionLabel() để lấy nhãn này. Giá trị trả về của phương thức này sẽ được bản địa hoá theo ngôn ngữ mà người dùng ưu tiên lựa chọn trên thiết bị.
Một tuỳ chọn để người dùng từ chối cấp quyền. Nếu từ chối cấp quyền truy cập thông tin vị trí ở chế độ nền, thì người dùng vẫn có thể dùng ứng dụng của bạn.
Hình 8. Thông báo nhắc người dùng rằng họ đã cấp cho một ứng dụng quyền truy cập thông tin vị trí ở chế độ nền.
Ứng dụng nhắm đến Android 10 trở xuống
Khi một tính năng trong ứng dụng của bạn yêu cầu quyền truy cập thông tin vị trí ở chế độ nền, người dùng sẽ thấy một hộp thoại của hệ thống. Hộp thoại này có một tuỳ chọn để chuyển đến các tuỳ chọn cấp quyền truy cập thông tin vị trí cho ứng dụng trên trang cài đặt.
Miễn là ứng dụng của bạn đã làm theo các phương pháp hay nhất để yêu cầu quyền truy cập thông tin vị trí, thì bạn không cần thực hiện thay đổi nào để hỗ trợ hành vi này.
Người dùng có thể ảnh hưởng đến độ chính xác của vị trí ở chế độ nền
Nếu người dùng yêu cầu vị trí gần đúng, thì các lựa chọn của người dùng trong hộp thoại cấp quyền truy cập thông tin vị trí cũng áp dụng cho quyền truy cập thông tin vị trí ở chế độ nền. Nói cách khác, nếu người dùng cấp cho ứng dụng của bạn quyền ACCESS_BACKGROUND_LOCATION nhưng chỉ cấp quyền truy cập thông tin vị trí gần đúng ở chế độ nền trước, thì ứng dụng của bạn cũng chỉ có quyền truy cập thông tin vị trí gần đúng ở chế độ nền.
Tài nguyên khác
Để biết thêm thông tin về quyền truy cập thông tin vị trí trong Android, hãy xem các tài liệu sau:
Ứng dụng mẫu để minh hoạ việc sử dụng quyền truy cập thông tin vị trí.
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-08-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-08-27 UTC."],[],[],null,["This page discusses the following:\n\n- How to request background location access.\n- How to handle the request based on your app's target SDK version.\n- How user preferences for approximate location affect how your app gets background location.\n\n**Note:** If a feature in your app accesses location from the background, verify that access is necessary. Consider getting the information that the feature needs in other ways. To learn more about background location access, see the [Access location in the background](/training/location/background) page. \n**Figure 7.** Settings page includes an option called **Allow all the time**, which grants background location access.\n\nPermission dialog contents depend on target SDK version\n\nWhen a feature in your app requests background location on a device that runs\nAndroid 10 (API level 29), the system permissions dialog includes an option\nnamed **Allow all the time**. If the user selects this option, the feature in\nyour app gains background location access.\n\nOn Android 11 (API level 30) and higher, however, the system dialog doesn't\ninclude the **Allow all the time** option. Instead, users must enable background\nlocation on a settings page, as shown in figure 7.\n\nYou can help users navigate to this settings page by following best practices\nwhen requesting the background location permission. The process for granting the\npermission depends on your app's target SDK version.\n\nApp targets Android 11 or higher\n\nIf your app hasn't been granted the `ACCESS_BACKGROUND_LOCATION` permission, and\n[`shouldShowRequestPermissionRationale()`](/reference/androidx/core/app/ActivityCompat#shouldShowRequestPermissionRationale(android.app.Activity,%20java.lang.String)) returns `true`, show an\neducational UI to users that includes the following:\n\n- A clear explanation of why your app's feature needs access to background location.\n- The user-visible label of the settings option that grants background location (for example, **Allow all the time** in figure 7). You can call [`getBackgroundPermissionOptionLabel()`](/reference/android/content/pm/PackageManager#getBackgroundPermissionOptionLabel()) to get this label. The return value of this method is localized to the user's device language preference.\n- An option for users to decline the permission. If users decline background location access, they should be able to continue using your app.\n\n**Figure 8.**Notification reminding the user that they've granted background location access to an app.\n\nApp targets Android 10 or lower\n\nWhen a feature in your app requests background location access, users see a\nsystem dialog. This dialog includes an option to navigate to your app's location\npermission options on a settings page.\n\nAs long as your app already follows best practices for requesting location\npermissions, you don't need to make any changes to support this behavior.\n\nUser can affect background location accuracy\n\nIf the [user requests approximate location](/develop/sensors-and-location/location/permissions/runtime#approximate-request), the user's choices in the\nlocation permissions dialog also apply to background location. In other words,\nif the user grants your app the `ACCESS_BACKGROUND_LOCATION` permission but\ngrants only approximate location access in the foreground, your app has only\napproximate location access in the background as well.\n\nAdditional resources\n\nFor more information about location permissions in Android, view the following\nmaterials:\n\nCodelabs\n\n- [Privacy best practices](/codelabs/android-privacy-codelab)\n\nVideos\n\n- [How to find possible background location usage](https://www.youtube.com/watch?v=xTVeFJZQ28c)\n\nSamples\n\n- [Sample app](https://github.com/android/platform-samples/tree/main/samples/location/src/main/java/com/example/platform/location/permission) to demonstrate the use of location permissions."]]