아래와 같은 위험권한 코드를 사용하고있습니다. 처음 실행시에는 권한요청을 하면서 잘되다가 두번째 실행했을때는 권한요청승인 메시지와 java.lang.IllegalArgumentException: permission cannot be null or empty 이러한 에러 메시지와 함께 프로그램이 죽어버립니다... 검색을해봐도 도무지 원일을 알수가 없네요 도와주세요 ㅠ
String[] permissions = {
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
};
checkPermissions(permissions);
}
public void checkPermissions(String[] permissions) {
ArrayList<String> targetList = new ArrayList<String>();
for (int i = 0; i < permissions.length; i++) {
String curPermission = permissions[i];
int permissionCheck = ContextCompat.checkSelfPermission(this, curPermission);
if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, curPermission + " 권한 있음.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, curPermission + " 권한 없음.", Toast.LENGTH_LONG).show();
if (ActivityCompat.shouldShowRequestPermissionRationale(this, curPermission)) {
Toast.makeText(this, curPermission + " 권한 설명 필요함.", Toast.LENGTH_LONG).show();
} else {
targetList.add(curPermission);
}
}
}
String[] targets = new String[targetList.size()];
targetList.toArray(targets);
ActivityCompat.requestPermissions(this, targets, 101);
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 101: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "첫번째 권한을 사용자가 승인함.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "첫번째 권한 거부됨.", Toast.LENGTH_LONG).show();
}
return;
}
}
}