1. Khai báo quyền ở AndroidManifest.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application ....... //android>=10 cần khai báo thêm: android:requestLegacyExternalStorage="true" <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> |
2. Yêu cầu xin quyền khi chạy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
//1. Tạo mảng các quyền cần xin private String[] PERMISSION = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; //2. Tạo hàm check các quyền đã được cấp chưa. //PackageManager.PERMISSION_GRANTED: ứng với đã được cấp quyền //PackageManager.PERMISSION_DENIED: ứng với chưa được cấp quyền private boolean checkPermission(){ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { for (String p:PERMISSION){ int status = checkSelfPermission(p); if (status == PackageManager.PERMISSION_DENIED){ return false; } } } return true; } //3. Tạo hàm yêu cầu người dùng cấp quyền private void requestPermission(){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ requestPermissions(PERMISSION, 0); } } //4. Tạo hàm trả về kết quả sau khi người dùng xác nhận @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (checkPermission()){ initViews(); } else { finish(); } } |
3. Sử dụng khi chạy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (checkPermission()){ initViews(); } else { requestPermission(); } } private void initViews() { //Code của bạn tại đây } |