앱을 설치하고 처음 실행시 여러 개의 권한 요청 방법. requestPermissions 함수를 사용하는데, 두번째 인자인 퍼미션 목록은 String Array 타입이다. 즉 여러 개의 권한을 한꺼번에 요청 가능.
필요한 권한 목록을 ArrayList<String>에 저장하고, 목록이 완성되면 requestPermissions을 이용해 권한 요청
ArrayList<String> permissions = new ArrayList<String>();
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.RECORD_AUDIO);
...
if(permissions.size() > 0) {
String[] reqPermissionArray = new String[permissions.size()];
reqPermissionArray = permissions.toArray(reqPermissionArray);
ActivityCompat.requestPermissions(this, reqPermissionArray, MY_PERMISSIONS_REQUEST_MULTI);
}
사용자가 권한을 승인하거나 거절한 경우에 대한 대응은 onRequestPermissionsResult 함수에서 처리.
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults.length > 0) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED) {
...
}
...
}
끗.