6

Nếu gmaps nhu cầu này cho phép:Marshmallow Permission cho gmaps

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
  1. tôi nên hỏi cho mỗi một cho người dùng với requestPermissions?
  2. Tôi đã kiểm tra một số lần và nó chỉ gặp sự cố khi người dùng không cấp quyền cho android.permission.ACCESS_FINE_LOCATION nhưng không cho phép người khác, tại sao?

Trả lời

3

Tôi có nên yêu cầu mỗi người dùng cho người dùng requestPermissions không?

Trước tiên khi sử dụng requestPermission?

requestPermission chỉ gọi sau checkSelfPermission khi phương thức này không trả lại PERMISSION_GRANTED.

Bạn có thể tìm thấy list of permission mà Android M yêu cầu trong thời gian chạy. Mỗi quyền trong số này là một phần của nhóm Quyền. WRITE_EXTERNAL_PERMISSION là từ android.permission-group.STORAGEACCESS_COARSE_LOCATION/ACCESS_FINE_LOCATION là từ android.permission-group.LOCATION.

Nếu người dùng cho phép truy cập vào ví dụ cho phép ACCESS_COARSE_LOCATION - thì Android sẽ tự động cấp quyền truy cập của nhóm quyền này -i.e. permission-group.LOCATION -. Vì vậy, nếu sau này bạn checkSelfPermission cho ACCESS_FINE_LOCATION, bạn sẽ nhận được PackageManager.PERMISSION_GRANTED.

Nếu bạn gặp sự cố, điều đó có nghĩa là bạn đã cố gắng gọi, ví dụ LocationServices.FusedLocationApi.requestLocationUpdates trước khi yêu cầu từ người dùng, vị trí nhóm quyền.

Edit:

Đừng quên rằng requestPermissionkhông đồng bộ. Vì vậy, không gọi phương thức yêu cầu quyền sau khi requestPermission. Để gọi một phương thức yêu cầu quyền, bạn nên ghi đè onRequestPermissionsResult cung cấp cho bạn danh sách quyền và trạng thái được cấp phép/từ chối của họ.

+0

cảm ơn bạn! – Caipivara

+0

Bạn cũng có thể kiểm tra video mẫu android giải thích quy trình https://www.youtube.com/watch?list=PLWz5rJ2EKKc-lJo_RGGXL2Psr8vVCTWjM&v=C8lUdPVSzDk – xiaomi

3

Bạn chỉ cần yêu cầu quyền đối với các nhóm LOCATION và STORAGE. Tôi cũng khá chắc chắn Vị trí tốt bao gồm quyền cho Coarse, vì vậy bạn không cần phải bao gồm dòng đó trong tệp kê khai của mình.

+0

ý của bạn là gì bởi 'Vị trí tốt bao gồm quyền cho Coarse'? Nếu tôi yêu cầu một sự cho phép thì nó sẽ được cấp cho tất cả trên cùng một nhóm? – Caipivara

+3

'ACCESS_COARSE_LOCATION' dành cho dữ liệu di động và wifi và' ACCESS_FINE_LOCATION' và cho dữ liệu di động, wifi và GPS. Vì vậy, vị trí tốt "bao gồm" Vị trí thô. – xiaomi

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