안드로이드 권한요청 메서드를 만드는데 한줄 오류떄문에 진행이 안되네요....
checkSelfPermission 이 계속 오류가뜹니다.. 인터넷에서 찾은 글 그대로 맞춰서 햇는데 왜그럴까요??
@Override
public void onClick(View v) {
//마쉬멜로우이상인지 체크
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//전회걸기 권한을 확인
int permissionResult = checkSelfPermission(Manifest.permission.CALL_PHONE);
//해당 어플이 거부되있는지 확인
if (permissionResult == PackageManager.PERMISSION_DENIED) {
//사용자가 한번이라도 거부햇는지 확인
if (shouldShowRequestPermissionRationale(Manifest.permission.CALL_PHONE)) {
AlertDialog.Builder dialog = new AlertDialog.Builder(AdminMain.this);
dialog.setTitle("권한이 필요합니다.")
.setMessage("이 기능을 사용하기 위해서는 단말기의 \"전화걸기\"권한이 필요합니다 계속하시겠습니까?")
.setPositiveButton("네", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//새로 인스턴스를 생성햇기떄문에 한번더 버전체크를한다
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//안드로이드에 권한을 요청합니다.
requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, 1000);
}
}
})
.setNegativeButton("아니요", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(AdminMain.this, "기능을 취소했습니다", Toast.LENGTH_SHORT).show();
}
})
.create()
.show();
}//최초 권한요청
else {
requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, 1000);
}
}//권한 있을경우
else {
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + tel));
startActivity(intent);
}
}//마쉬멜로우 미만
else {
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + tel));
startActivity(intent);
}
}
});
}
//요청응답을 가저옵니다.
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == 1000) {
//요청한 권한을 허용한 경우....
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + tel));
//여기아래에서 발생합니다.
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
startActivity(intent);
}
} else {
Toast.makeText(AdminMain.this, "권한요청을 거부했습니다.", Toast.LENGTH_SHORT).show();
}
}
}