Trong android 6.0 ( API cấp twenty-three ) trở lên, ứng dụng có thể yêu cầu người dùng cấp quyền trong thời gian chạy, thay vì trước chi cài đặt. Điều này cho phép ứng dụng yêu cầu được cấp quyền chi ứng dụng thực sự đòi hỏi dịch vụ hoặc dữ liệu được dịch vụ bảo vệ. Trong chi việc này không ( nhất thiết ) thay đổi hành six tổng thể của ứng dụng, nhưng nó sẽ tạo radium một vài thay đổi liên quan đến cách xử lý dữ liệu nhạy cảm của người dùng :
Trong bối cảnh của ứng dụng, người dùng được nhắc để cấp quyền truy cập vào chức năng thuộc các nhóm quyền đó trong thời gian chạy. Người dùng nhạy cảm hơn với bối cảnh chi có yêu cầu cấp quyền và nếu có sự không khớp giữa những gì bạn đang yêu cầu và mục đích của ứng dụng, thậm chí điều quan trọng hơn là phải giải thích chi tiết cho người dùng về lý do tại sao bạn yêu cầu quyền đó. Mỗi chi có thể, bạn nên giải thích về yêu cầu của mình tại thời điểm yêu cầu lẫn trong hộp thoại tiếp theo nếu người dùng từ chối yêu cầu.
Reading: Phương pháp hay nhất về cấp quyền cho ứng dụng | Nhà phát triển Android | Android Developers
Để tăng khả năng yêu cầu cấp quyền được chấp nhận, chỉ nhắc chi một tính năng cụ thể được yêu cầu. Ví dụ : chỉ nhắc cấp quyền truy cập vào micrô chi người dùng nhấp vào nút micrô. Nhiều khả năng người dùng cấp quyền cho điều họ đang mong đợi .
Lưu ý: Không làm người dùng quá tải chi yêu cầu mọi quyền vào lúc khởi động ứng dụng. Tỏ ra lịch sự với người dùng và chỉ yêu cầu cấp quyền chi họ cần truy cập vào một tính năng cụ thể .Linh hoạt hơn trong việc cấp quyền
Người dùng có thể từ chối cấp quyền truy cập riêng lẻ vào thời điểm quyền được yêu cầu và đang trong phần cài đặt. Tuy nhiên, họ vẫn thấy bất ngờ chi chức năng không hoạt động make không được cấp quyền. Bạn nên theo dõi số lượng người dùng đang từ chối quyền ( ví dụ như sử dụng google Analytics ) để có thể tái cấu trúc ứng dụng nhằm tránh phụ thuộc vào quyền đó, hoặc giải thích rõ hơn lý bash bạn cần đến quyền để ứng dụng hoạt động đúng cách. Bạn cũng nên đảm bảo rằng ứng dụng xử lý các trường hợp ngoại lệ chi người dùng từ chối yêu cầu cấp quyền hoặc tắt quyền trong chế độ cài đặt .
Tăng gánh nặng giao dịch
Người dùng được yêu cầu cấp quyền truy cập cho từng nhóm quyền chứ không phải như một tập hợp nào đó. Điều này cực kỳ quan trọng để giảm thiểu số lượng quyền mà bạn yêu cầu. Điều này làm tăng gánh nặng cấp quyền cho người dùng và suffice đó làm tăng xác suất để ít nhất một trong các yêu cầu bị từ chối .
Các quyền yêu cầu trở thành trình xử lý mặc định
Một số ứng dụng phụ thuộc vào quyền truy cập vào thông can người dùng nhạy cảm liên quan đến nhật ký cuộc gọi và tin nhắn samarium. Nếu muốn yêu cầu cấp quyền cụ thể với nhật ký cuộc gọi và tin nhắn master of science cũng như xuất bản ứng dụng lên Cửa hàng play, thì bạn phải nhắc người dùng đặt ứng dụng làm trình xử lý mặc định cho một hàm hệ thống cốt lõi trước chi yêu cầu quyền chi bắt đầu chạy này.
Để biết thêm thông tin về trình xử lý mặc định, bao gồm cả hướng dẫn về hiển thị lời nhắc trình xử lý mặc định cho người dùng, xem hướng dẫn về các quyền chỉ được sử dụng trong trình xử lý mặc định .
Biết rõ những thư viện bạn đang dùng đến
Đôi chi, thư viện mà bạn sử dụng trong ứng dụng yêu cầu cấp quyền. Ví dụ : quảng cáo và thư viện phân tích có thể đòi hỏi quyền truy cập vào nhóm quyền
LOCATION
để triển khai chức năng được yêu cầu. Tuy nhiên, theo quan điểm của người dùng, yêu cầu cấp quyền đến từ ứng dụng của bạn chứ không phải từ thư viện .
Cũng giống như người dùng chọn những ứng dụng sử dụng ít quyền hơn cho cùng một chức năng, nhà phát triển nên rà soát thư viện của họ và chọn các SDK của bên thứ bachelor of arts mà không sử dụng các quyền không cần thiết. Ví dụ : nếu bạn đang sử dụng một thư viện cung cấp chức năng vị trí, đảm bảo bạn không yêu cầu quyềnFINE_LOCATION
trừ chi đang sử dụng chức năng nhắm mục tiêu dựa trên vị trí.Giới hạn quyền truy cập trong chế độ nền vào tính năng vị trí
chi ứng dụng của bạn đang chạy trong chế độ nền, quyền truy cập vào vị trí phải quan trọng với chức năng cốt lõi của ứng dụng và cho thấy lợi ích rõ ràng với người dùng .
Kiểm thử cả hai mô hình cấp quyền
Trên android 6.0 ( cấp API twenty-three ) trở lên, người dùng có thể cấp và thu hồi quyền cho ứng dụng tại thời điểm chạy, thay vì làm như vậy chi cài đặt ứng dụng. Vì vậy, bạn sẽ phải kiểm thử ứng dụng của mình trong nhiều điều kiện hơn. Trước android 6.0, bạn có thể hợp lý giả định rằng nếu ứng dụng đang chạy, thì ứng dụng có tất cả các quyền đã được ứng dụng khai báo trong tệp kê khai ứng dụng. Giờ đây, người dùng có thể bật hoặc tắt quyền cho mọi ứng dụng, bất kể cấp độ API là như thế nào. Bạn nên kiểm thử để đảm bảo chức năng của ứng dụng hoạt động thông suốt trên nhiều trường hợp cấp quyền .
Các bí quyết sau đây sẽ giúp bạn phát hiện các vấn đề về mã liên quan đến quyền trên thiết bị chạy API cấp twenty-three trở lên :
CAMERA
, READ_CONTACTS
và ACCESS_FINE_LOCATION
trong tệp kê khai. Bạn nên kiểm thử ứng dụng với từng quyền được bật và tắt để đảm bảo ứng dụng có thể xử lý tất cả các cấu hình quyền một cách tốt đẹp.
$ adb shell pm list permissions -d -g
$ adb shell pm [grant|revoke]...