안녕하세요
권한이 필요한 것 같습니다.
<uses-permission android:name="android.permission.CALL_PHONE" />
매니페스트에 추가하시고, OS 마쉬멜로우 같은 경우 권한체크하는 로직이 필요합니다.
아래 소스를 응용하셔서 코드 작성하시면 되겠습니다! 도움되시길
private void checkPermission() {
// 마시멜로 이전 버전 권한 체크 필요없음
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
runApp();
return;
}
// 권한 있는지 여부 체크
// checkSelfPermission() 리턴 값이 0 이면 권한 있음. -1 이면 권한 없음
// 권한 종류 : 카메라, 메모리 읽기/쓰기, 전화, 위치, 네트워크 상태
if (checkSelfPermission(Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(Manifest.permission.CALL_PHONE)
!= PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(Manifest.permission.ACCESS_NETWORK_STATE)
!= PackageManager.PERMISSION_GRANTED) {
// 권한 요청
ActivityCompat.requestPermissions(this,
permissions,
MY_PERMISSIONS);
}else{
runApp(); // 권한이 이미 다 허용 됐을 경우 메인으로 이동
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
// TODO Auto-generated method stub
switch (requestCode) {
case MY_PERMISSIONS:
if (grantResults.length > 0) {
// 권한 허가
// 해당 권한을 사용해서 작업을 진행할 수 있습니다
for (int i = 0; i < grantResults.length; i++) {
if(grantResults[i] != PackageManager.PERMISSION_GRANTED){
Toast.makeText(this, "앱을 실행하기 위한 권한이 필요합니다.", Toast.LENGTH_SHORT).show();
// 셋팅 화면으로 이동 후 권한 얻기
// startActivity(new Intent(Settings.ACTION_SETTINGS));
return;
}
}
runApp();// 권한체크가 끝났을 경우 메인으로 이동
}
break;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}