Android 6.0 multiple permissions

后端 未结 22 2298
太阳男子
太阳男子 2020-11-22 03:58

I know that Android 6.0 has new permissions and I know I can call them with something like this

if (ContextCompat.checkSelfPermission(this, Manifest.permiss         


        
22条回答
  •  借酒劲吻你
    2020-11-22 04:40

    This is what I have done in my activity. Hoping will be helpful. I am asking for camera and microphone permissions.

    public class ActiveCallActivity extends AppCompatActivity {
        .....
    
        private static final String cameraPermissionKey = "cameraPermission";
        private static final String microphonePermissionkey = "microphonePermission";
    
        private static ArrayList permissionsQueue = new ArrayList();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            .....
            // in ValidationCheckersAndValidators simply checking if have permission or not.
            if(ValidationCheckersAndValidators.haveCameraPermission(this)) performHaveCameraPermissionLayout(); else performHaveNoCameraPermissionLayout();
            if(ValidationCheckersAndValidators.haveMicrophonePermission(this)) performHaveMicrophonePermissionLayout(); else performHaveNoMicrophonePermissionLayout();
    
        }
    
        private void performHaveNoCameraPermissionLayout() {
            .....
            permissionsQueue.add(cameraPermissionKey);
        }
    
        private void performHaveNoMicrophonePermissionLayout() {
            .....
            permissionsQueue.add(microphonePermissionkey);
        }
    
        @Override
        protected void onResume() {
            super.onResume();
    
            .....
            passThroughPermissionsQueue();
        }
    
        private void passThroughPermissionsQueue() {
            if(!permissionsQueue.isEmpty()) {
                String permissionKey = permissionsQueue.remove(0);
                switch (permissionKey) {
                    case cameraPermissionKey: {
                        ValidationCheckersAndValidators.requestForCameraPermission(this);
                        return;
                    }
                    case microphonePermissionkey: {
                        ValidationCheckersAndValidators.requestForMicrophonePermission(this);
                        return;
                    }
                }
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
            switch(requestCode) {
                case cameraPermissionRequestCode: {
                    if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                        performHaveCameraPermissionLayout();
                    }
                    break;
                }
                case microphonePermissionRequestCode: {
                    if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                        performHaveMicrophonePermissionLayout();
                    }
                    break;
                }
            }
            passThroughPermissionsQueue();
        }
    }
    

提交回复
热议问题