Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android M

Tìm hiểu về cấp quyền trong Android M

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

Giới thiệu

Trước khi phát hành Android M, mô hình cấp quyền trên Android cung cấp theo kiểu người dùng cấp toàn bộ quyền hoặc là không có gì hết lúc cài đặt ứng dụng. Điều này có nghĩa là nếu người dùng muốn sử dụng một ứng dụng, họ trước tiên phải cấp mọi quyền đi kèm trong ứng dụng hoặc chọn không cài đặt nó luôn. Điều này đã dẫn đến nhiều nhà phát triển mất đi số lượng cài đặt, một sự tin tưởng bị chia cắt giữa người dùng và nhà phát triển, và những vấn đề riêng tư khác.

Legacy Install Time Permissions Dialog

Theo mô hình cấp quyền mới, người dùng sẽ có thể chấp nhận quyền tại thời điểm chạy khi chúng là cần thiết và có thể từ chối các quyền đó bất kỳ lúc nào. Trong bài viết này, bạn sẽ tìm hiểu sự thay đổi này trong việc xử lý cấp quyền sẽ ảnh hưởng như thế nào đến bạn với tư cách là một nhà phát triển và người dùng sẽ trải nghiệm các ứng dụng của bạn như thế nào.

Cần lưu ý rằng bài viết này được viết trước khi phiên bản Android M chính thức được phát hành, vì vậy một số thông tin có thể thay đổi khi phiên bản chính thức được phát hành.

1. Những gì cần được cấp quyền?

Mặc dù Android M vẫn đòi hỏi các quyền được khai báo trong AndroidManifest.xml, nhưng người dùng bây giờ sẽ được yêu cầu chấp nhận hoặc từ chối việc sử dụng các quyền đó lúc chạy ứng dụng. Một trong những thay đổi quan trọng trong phiên bản mới của Android đó là android.permission.INTERNETandroid.permission.WRITE_EXTERNAL_STORAGE đã được hạ cấp từ nguy hiểm sang bình thường. Điều này có nghĩa rằng bạn không cần phải nhắc người dùng trước khi sử dụng.

Khi được yêu cầu cấp quyền, người dùng sẽ được nhắc nhở dựa trên nhóm các quyền, chứ không được yêu cầu chấp thuận từng quyền trong một nhóm. Điều này có nghĩa rằng nếu ứng dụng của bạn cần gửi và nhận tin nhắn SMS, thì người dùng của bạn sẽ chỉ được nhắc chấp nhận nhóm quyền SMS. Dưới đây là danh sách các nhóm quyền hiện đang được hỗ trợ trong Android M Developer Preview 2 như được thấy từ các cài đặt hệ thống.

List of currently supported permission groups

Cũng cần lưu ý rằng Android có một hệ thống Intent mạnh mẽ, cho phép các nhà phát triển yêu cầu dữ liệu từ các ứng dụng khác. Thay vì cần phải yêu cầu quyền Camera và phát triển một ứng dụng sử dụng Camera API từ đầu, thì bạn có thể yêu cầu người dùng chụp ảnh bằng cách sử dụng một ứng dụng máy ảnh đã tin cậy lấy hình ảnh vào ứng dụng của bạn. Các quyền liên quan đến máy ảnh sẽ được xử lý bởi ứng dụng camera.

2. Cách yêu cầu quyền?

Khi bạn cần phải sử dụng một tính năng mà đòi hỏi một quyền, có một quá trình chung gồm các sự kiện sẽ xảy ra. Trước tiên bạn cần phải xem quyền đó đã được chấp thuận bởi người dùng của bạn hay chưa.

Nếu người dùng vẫn chưa cấp quyền, bạn có thể đưa ra một hộp thoại yêu cầu được cấp quyền. Lần đầu tiên bạn trình bày hộp thoại này cho người dùng, họ sẽ phải từ chối hoặc chấp nhận quyền.

Tuy nhiên, nếu họ đã từng từ chối cấp quyền và yêu cầu một lần nữa, họ sẽ có tùy chọn không bao giờ được yêu cầu quyền đó một lần nữa.

Requesting Permissions Flow Chart

Bạn có thể kiểm tra một quyền đã được cấp hay chưa bằng cách gọi checkSelfPermission trước khi sử dụng một tính năng mà sẽ yêu cầu quyền đó. Phương thức này trả về một giá trị int dựa trên việc quyền đó có được cấp hay chưa.

Nếu nó tương đương với PackageManager.PERMISSION_GRANTED, thì bạn có thể tiếp tục. Tuy nhiên, nếu quyền đó vẫn chưa được cấp, bạn có thể yêu cầu nó với requestPermissions, truyền vào một mảng các quyền và một code yêu cầu kiểu int tuỳ biến để theo dõi dòng logic của ứng dụng.

Một khi requestPermissions được gọi, người dùng sẽ thấy một hộp thoại yêu cầu cho mỗi nhóm quyền mà ứng dụng của bạn yêu cầu. Tốt nhất là chỉ yêu cầu quyền truy cập khi cần thiết, thay vì với số lượng lớn khi người dùng của bạn mở ứng dụng của bạn lần đầu tiên.

Request dialog on Android M

Khi người dùng của bạn hoàn tất hộp thoại, onRequestPermissionsResult được gọi và có thể được truy cập trong Activity của bạn. Đây là nơi bạn nên bắt đầu chức năng của bạn hoặc xử lý tình huống khi người dùng của bạn từ chối một hoặc nhiều quyền.

Một ví dụ về cách kiểm tra một quyền đã được cấp hay là bị từ chối được chỉ ra ở dưới đây. Nếu người dùng từ chối bất kỳ quyền được yêu cầu nào cho chức năng của bạn, bạn nên vô hiệu hoá chức năng đó và cho người dùng biết lý do tại sao nó không hoạt động trong ứng dụng của bạn.

3. Những ứng dụng cũ trên Android M

Trong khi ứng dụng được xây dựng dựa trên Android M được yêu cầu để cài đặt hộp thoại và các phương thức cấp quyền mới, thì các ứng dụng được xây dựng cho các phiên bản trước của Android sẽ vẫn còn hiện diện đối với người dùng với một danh sách các quyền lúc cài đặt. Mặc dù các quyền được chấp nhận trước khi người dùng có thể sử dụng ứng dụng của bạn, thì họ vẫn có thể thu hồi bất cứ lúc nào.

Vì cơ sở hạ tầng cho việc xử lý thu hồi các quyền truy cập sẽ không có sẵn trong các ứng dụng dựa trên Android cũ hơn so với Android M, nên bất kỳ tính năng nào mà có yêu cầu quyền sẽ trả về null, 0, hay một giá trị rỗng khi các quyền không được cấp. Điều này có thể dẫn đến hành vi bất ngờ trong các ứng dụng, do đó, khuyến cáo các nhà phát triển nên chuẩn bị nâng cấp các ứng dụng của họ để hỗ trợ các mô hình cấp quyền trên Android M mới càng sớm càng tốt.

Tóm tắt

Trong bài viết này, bạn đã tìm hiểu về mô hình cấp quyền mới trên Android M và cách hỗ trợ cấp quyền được cập nhật trong các ứng dụng của bạn. Chúng tôi cũng đã khái quát cách các ứng dụng sẽ phản ứng với phiên bản mới của Android, khi chúng đã được xây dựng cho phiên bản trước. Sử dụng thông tin này, bạn có thể để làm cho các ứng dụng của bạn sẵn sàng cho bản phát hành Android tiếp theo.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.