액티비티가 아닌 곳에서 전화 걸기 화면으로 넘기기 위한 방법


////////////////////////////////


Context를 선언하여 생성자에서 context를 미리 받아놓자

(객체생성할때 this를 넘기자)


private Context mContext;


public 생성자(Context context){

mContext = context;

}


private void startCall(String num) {

        Intent it = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + num));

        it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        mContext.startActivity(it);

}


//////////////////////////////////


근데 저렇게 써왔던것 같은데 startActivity에서 에러가 났다 ㅡㅡ

에러 알림에서 해결방법을 클릭했더니


private void startCall(String num) {

        Intent it = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + num));

        it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

            // TODO: Consider calling

            //    ActivityCompat#requestPermissions

            // here to request the missing permissions, and then overriding

            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,

            //                                          int[] grantResults)

            // to handle the case where the user grants the permission. See the documentation

            // for ActivityCompat#requestPermissions for more details.

            return;

        }

        mContext.startActivity(it);

    }


이런식으로 권한체크 if문이 추가되었다!!! 

마시멜로우 부터 권한 부분이 달라졌다고 들었는데 그 때문인것 같다. 

(마시멜로우 전에는 앱 설치시 모든 권한을 다 허가받고 설치를 했는데 

후 부터는 각 기능을 실행하기전에 권한을 확인한다고 한다??)


아무튼 권한여부를 이제 각각 체크해줘야 하는것 같은데 좀 더 알아보고 해야겠다.

참고할만한 사이트는 찾았다.


http://gun0912.tistory.com/55

+ Recent posts