Easypermissions簡(jiǎn)化了Android M的運(yùn)行時(shí)權(quán)限的申請(qǐng)、結(jié)果處理、判斷等步驟。
官方文檔:
https://github.com/googlesamples/easypermissions
運(yùn)行時(shí)權(quán)限官方文檔解釋:
https://developer.android.com/training/permissions/requesting.html
Android M對(duì)權(quán)限系統(tǒng)進(jìn)行了改變。Android M之前所需權(quán)限只需要在AndroidManifest中申請(qǐng)即可。但更新Android M系統(tǒng)后,部分“Dangerous Permission”需要在運(yùn)行時(shí)詢問申請(qǐng)。
Normal and Dangerous Permissions解釋:https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous
如下圖所示:
運(yùn)行時(shí)權(quán)限申請(qǐng)代碼中如果需要申請(qǐng)運(yùn)行時(shí)權(quán)限步驟:
1 檢查運(yùn)行時(shí)權(quán)限
ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED2 申請(qǐng)權(quán)限
ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_CONTACTS}, MY_PERMISSIONS_REQUEST_READ_CONTACTS);3 接收權(quán)限處理結(jié)果
@Overridepublic void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_READ_CONTACTS: { // If request is cancelled, the result arrays are empty. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // permission was granted, yay! Do the // contacts-related task you need to do. } else { // permission denied, boo! Disable the // functionality that depends on this permission. } return; } // other 'case' lines to check for other // permissions this app might request }}以上即是google建議的運(yùn)行時(shí)權(quán)限處理過程。代碼量和處理地方還是比較繁瑣的。so,Easypermissions應(yīng)運(yùn)而生。
首先,引用庫(kù)
dependencies { compile 'pub.devrel:easypermissions:0.1.9'}同樣,easypermissions處理權(quán)限分為3步。
1 檢查權(quán)限
String[] perms = {Manifest.permission.CAMERA, Manifest.permission.CHANGE_WIFI_STATE};if (EasyPermissions.haspermissions(this, perms)) { //... } else { //...}2 申請(qǐng)權(quán)限
EasyPermissions.requestPermissions(this, "拍照需要攝像頭權(quán)限", RC_CAMERA_AND_WIFI, perms);3 實(shí)現(xiàn)EasyPermissions.PermissionCallbacks接口,直接處理權(quán)限是否成功申請(qǐng)
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // Forward results to EasyPermissions EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } //成功 @Override public void onPermissionsGranted(int requestCode, List<String> list) { // Some permissions have been granted // ... } //失敗 @Override public void onPermissionsDenied(int requestCode, List<String> list) { // Some permissions have been denied // ... }Easypermissions主要簡(jiǎn)化了對(duì)權(quán)限申請(qǐng)結(jié)果的處理和判斷,直接以接口的方式回調(diào)處理結(jié)果。不需要再自行進(jìn)行處理。
好用指數(shù),5星!!!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注