아래와 같은 위험권한 코드를 사용하고있습니다. 처음 실행시에는 권한요청을 하면서 잘되다가 두번째 실행했을때는 권한요청승인 메시지와 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;
        }
    }
}