1. 程式人生 > >Android高效開發之,Android6.0動態許可權的封裝

Android高效開發之,Android6.0動態許可權的封裝

每次進行動態許可權註冊的時候,都要使用固定的流程
動態許可權申請的流程

對該固定程式碼進行封裝,可以在所有介面Activity基類中進行動態許可權的申請。
子類Activity只需要構造一個LinkedList 傳入就可進行許可權的檢查和申請。
基類的程式碼如下

public class BaseActivity extends Activity {
    //在這個介面中獲取動態許可權
    //檢查是否擁有撥號的許可權
    private String[] modelPermissions;
    private LinkedList<String> linkedList = new
LinkedList<>(); public void checkPermissions(LinkedList<String> modelList){ this.linkedList = modelList; if (Build.VERSION.SDK_INT >=23 ){ int count = linkedList.size(); for ( int index = 0 ; index < count ; index++ ){ if (ContextCompat.checkSelfPermission(this
,linkedList.get(index)) == PackageManager.PERMISSION_GRANTED ){ //已經獲取了該許可權 就將該許可權從資料來源刪除 linkedList.remove(index); } } ActivityCompat.requestPermissions(this,(String[]) linkedList.toArray(),66); } } //沒有撥號許可權進行動態許可權的註冊
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 66){ int count = grantResults.length; for (int index = 0 ; index < count ; index ++ ){ if (grantResults[index] != PackageManager.PERMISSION_GRANTED){ Toast.makeText(getApplicationContext(),"您已拒絕"+permissions[index],Toast.LENGTH_LONG).show(); } } } } }

子類中傳入需要申請的許可權,動態註冊

        //進行許可權的申請
        LinkedList<String> permissions = new LinkedList<>();
        permissions.add(Manifest.permission.CALL_PHONE);
        permissions.add(Manifest.permission.ACCESS_WIFI_STATE);
        permissions.add(Manifest.permission.CAMERA);
        checkPermissions(permissions);

Ok that’s All