1.Tổng Quan
Trong phiên bản Android M, người dùng được cung cấp một chức năng là cài đặ các permission sau khi ứng dụng đã được cài đặt. Việc này giúp cho ứng dụng của chúng ta khi cần đòi hỏi các quyền có mức độ cảnh báo cao sẽ hiển thị trong lúc sử dụng. Tức là người dùng hoàn toàn có thể cài đặt ứng dụng ưa thích với những quyền an toàn hơn và chủ động mở các quyền trong mức cảnh báo cao trong khi sử dụng máy. Trước khi đi vào hướng dẫn ta cần nắm được hai yếu tố là Android Permission và Target version API lvl 23 trước đã.
2.Android target version
Để khởi động được việc đối ứng Android M thì bạn cần phải cài đặt target version của ứng dụng là một số int >= 23.
Với target version >= 23:
Hệ điều hành Android sẽ xử lý bình thường với các thiết bị chưa update lên phiên bản Android trên 23 (Android M). Nghĩa là bạn sẽ không cần quan tâm nhiều đến Runtime Permission có trong Android.
II.Android Runtime Permission
Danh sách các permistion:
Nhìn có vẻ phức tạp nên sau đây mình sẽ hướng dẫn các bạn check.
*Yêu cầu check permistion : READ_EXTERNAL_STORAGE
1: Khai báo trong manifest:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
2: Thiết kế giao diện như hình :
Khi nhấn vào button sẽ gọi intent đến thư viện để lấy hình, và yêu cầu quyền đọc dữ liệu:
- Đầu tiên viết một hàm check permistion:
public void runTimePermission() { if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE)) { } else { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); } } }
- Viết sự kiện click:
//Call method runTimePermission(); Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent, 0); //requestCode = 0
- Nhận kết quả và xử lý:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 0 && resultCode == MainActivity.this.RESULT_OK) { //do some thing } else { //do some thing } }
Vậy là xong việc! Việc còn lại là các bạn chỉ cần xử lý và hiển thị ảnh lên ImageView.
Ngoài ra các bạn có thể tham khảo thêm tại đây: Runtime Permistion
Chúc các bạn thành công!