Android 6.0(API 23) 및 그 이상의 동적 요청 권한을 사용하는 방법

2041 단어
android6.0 이상, 일부 권한 신청은androidmanifest에만 있습니다.xml에서 정적 신청은 부족하고 동적 신청도 필요합니다.방법은 다음과 같습니다.
//       
private String[] mPermissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.CAMERA, Manifest.permission.READ_PHONE_STATE};
    private void applyPermission() {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
            //      permissions,           
            List permissionList = new ArrayList<>();
            int mRequestCode = 100;//     
            //            
            for (int i = 0; i < mPermissions.length; i++) {
                if (ContextCompat.checkSelfPermission(this, mPermissions[i]) != PackageManager.PERMISSION_GRANTED) {
                    permissionList.add(mPermissions[i]);//         
                }
            }
            //          
            if (permissionList.size() > 0) {
                ActivityCompat.requestPermissions(this, mPermissions, mRequestCode);
            }
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
            if (grantResults.length > 0) {
                Log.d(TAG, "grantResults.length:" + grantResults.length);
                for (int i = 0 ;i < grantResults.length ; i ++){
                    if (grantResults[i] != PackageManager.PERMISSION_GRANTED){
                        applyPermission();
                        break;
                    }
                }
            }
        }
    }


네가 응용한 시작 인터페이스의 onCreate 방법에서 applyPermission 방법을 사용하면 된다.1. 부여되지 않은 권한이 있는지 조회 2.있으면 이 권한을 요청합니다.요청 결과에 부여되지 않은 권한이 있는지 판단합니다. (onRequestPermissionsResult에 있습니다.) applyPermission 방법을 재조정할 수 있습니다.4. 사용자가 모든 권한을 부여할 때까지.방법이 간단하고 거칠다.

좋은 웹페이지 즐겨찾기