Android——6.0運行時權限申請,onRequestPermissionsResult回調不執行問題

權限是目前APP必不可少的,這裏介紹一下onRequestPermissionsResult回調不執行問題。

一,正常使用android 6.0權限:

1.檢查判斷

如果應用具有此權限,方法將返回PackageManager.PERMISSION_GRANTED,並且應用可以繼續操作。 
如果應用不具有此權限,方法將返回PERMISSION_DENIED,且應用必須明確向用戶要求權限。

private final int REQUEST_CODE_ADDRESS = 100;
 
private void checkPermissioin(){
        int checkCoarse = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION);
        int checkCoarseFine = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION);
        if (checkCoarse == PackageManager.PERMISSION_GRANTED  && checkCoarseFine == PackageManager.PERMISSION_GRANTED) {
           //已經授權
        } else {//沒有權限
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE_ADDRESS);//申請授權
 
        }
    }


2.處理授權回調

 @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
 
        switch (requestCode) {
            case REQUEST_CODE_ADDRESS:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] ==PackageManager.PERMISSION_GRANTED) {
                    // Permission Granted 授予權限
                  //處理授權之後邏輯
                    
                } else {
                    // Permission Denied 權限被拒絕
 
              ToastUtils.showShort(getActivity(),"權限被禁用");
                }
 
                break;
            default:
                break;
        }
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
 
    }


二、onRequestPermissionsResult回調不執行問題
問題場景:fragment中去檢查權限、申請權限,回調也就寫在fragment中了,而且寫了之後也沒有報任何錯,回調方法不執行。

原因:處理權限申請回調必須寫在Activity中。

解決方法:把這個回調移到這個Fragment所依附的那個Activity,處理相關邏輯。

 

相關文章:

相關文章: Android M Permissions: onRequestPermissionsResult() not being called

android6.0權限參考文檔

一行代碼解決Android M新的運行時權限問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章