5

PlacePicker là một tiện ích hữu ích được thêm vào trong com.google.android.gms:play-services-places:9.4.0. Tìm mô tả tại đây: PlacePickerTại sao Android PlacePicker không (!) Yêu cầu quyền ACCESS_FINE_LOCATION hoạt động?

Tài liệu nêu rõ rằng bạn cần quyền ACCESS_FINE_LOCATION để nó hoạt động.

Trên Marshmallow trở lên, bạn cũng phải yêu cầu người dùng cấp quyền này.
Nhưng có vẻ như nó hoạt động mà không làm bất kỳ điều này!
Ứng dụng của tôi không

  • cung cấp một API bản đồ chính
  • không xác định sự cho phép trong AndroidManifest
  • không yêu cầu người dùng cấp phép này bất cứ lúc nào

Nhưng chạy ứng dụng trên thiết bị Marshmallow DOES khởi động PlacePicker và tôi có thể

  • chọn đúng địa điểm (không thể không có khóa API).
  • vào "My Location" Vị trí của tôi qua-Button (nếu không có khóa API)

bất cứ ai có thể khẳng định điều này hoặc đã giải thích lý do tại sao widget này hoạt động mà không điều khoản thích hợp cấp?

+0

Tôi cũng cần biết lý do và nếu tôi nên yêu cầu ACCESS_FINE_LOCATION – pandalion98

Trả lời

1

Câu hỏi đã gần một tuổi nhưng tôi đã cố gắng tìm câu trả lời tương tự để có thể giúp người khác.

Đó là vì PlacePicker hoạt động với "yêu cầu dựa trên ý định". Tài liệu không rõ ràng với tài liệu đó, nhưng nó cho biết

1: Chỉ sử dụng các quyền cần thiết để ứng dụng của bạn hoạt động. Tùy thuộc vào cách bạn đang sử dụng các điều khoản, có thể có một cách khác để làm những gì bạn cần (hệ thống ý định, định danh, nền cho các cuộc gọi điện thoại) mà không dựa vào quyền truy cập vào thông tin nhạy cảm. Source

Và đưa ra một số đầu mối ở đây:

Nếu yêu cầu của bạn để truy cập vào dữ liệu người dùng là không thường xuyên - nói cách khác, nó không phải là không thể chấp nhận gây rối cho người dùng được trình bày với một cuộc đối thoại thời gian chạy mỗi thời gian bạn cần truy cập dữ liệu - bạn có thể sử dụng yêu cầu dựa trên ý định. Android cung cấp một số ý định hệ thống mà các ứng dụng có thể sử dụng mà không yêu cầu quyền vì người dùng chọn thứ gì, nếu có, để chia sẻ với ứng dụng tại thời điểm yêu cầu dựa trên ý định được đưa ra. Source

Tôi đã figured it out cho phép kiểm tra trường hợp sử dụng với các thiết bị Marshmallow và Lollipop, so sánh kết quả với PlacePicker mà tôi nghĩ có thể được sử dụng quyền ý định dựa với MediaStore rằng sử dụng loại phép theo tài liệu hướng dẫn:

Ví dụ: loại hành động ý định của MediaStore.ACTION_IMAGE_CAPTURE hoặc MediaStore.ACTION_VIDEO_CAPTURE có thể được sử dụng để chụp ảnh hoặc quay video mà không cần trực tiếp sử dụng đối tượng Camera (hoặc yêu cầu sự cho phép). Trong trường hợp này, ý định hệ thống sẽ yêu cầu sự cho phép của người dùng nhân danh bạn mỗi lần chụp ảnh. Ví dụ: Ví dụ, một loại hành động ý định của MediaStore.ACTION_IMAGE_CAPTURE hoặc MediaStore.ACTION_VIDEO_CAPTURE có thể được sử dụng để chụp ảnh hoặc quay video mà không cần trực tiếp sử dụng đối tượng Máy ảnh (hoặc yêu cầu quyền). Trong trường hợp này, ý định hệ thống sẽ yêu cầu sự cho phép của người dùng nhân danh bạn mỗi lần chụp ảnh. Source

Các vấn đề liên quan