티스토리 뷰

마시멜로우 이상에서는 Manifest에 선언된 권한도 소용이 없는 듯 합니다.

마시멜로우 이하 버전에서는 Manifest 권한을 그대로 사용할 수 있도록 Manifest에도 권한을 선언하고,

코드상으로 필요할 때마다 권한을 요청하는 코드를 만들어야 합니다.

(사용자가 다시 보지않음 체크를 하면 한번만 나타나겠죠~)


만약 문자를 전송하는 코드를 만들고 싶다면!




목적


특정 번호로 SMS문자 전송하기




SDK 버전 확인하기


먼저 SDK 버전을 확인하여 줍니다.

SDK 버전이 M버젼 이상이라면 권한 획득을 위해 checkPermission()을 호출하고

SDK 버전이 M버젼 이하라면    권한 획득을 따로 하지 않고 문자를 전송합니다!


if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){

    checkPermission();

}else{

    // 문자 전송




권한 체크하기


checkPermission()입니다!

개발자는 원하는 Permission을 체크할 수 있습니다.


shouldShowRequestPermissionRationale(...) : 이 함수로 설명을 표시할 것인지 선택합니다.

MY_PERMISSION_REQUEST_CODE : int형 정수로 선언하면 됩니당


/**

 * Permission check.

 */

private void checkPermission() {

    if (checkSelfPermission(Manifest.permission.SEND_SMS)

            != PackageManager.PERMISSION_GRANTED

            || checkSelfPermission(Manifest.permission.RECEIVE_SMS)

            != PackageManager.PERMISSION_GRANTED) {


        // Should we show an explanation?

        if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {

            // Explain to the user why we need to write the permission.

            Toast.makeText(this, "문자 송수신을 위해 권한이 필요합니다.", Toast.LENGTH_SHORT).show();

        }


        requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE},

                MY_PERMISSION_REQUEST_CODE); // 이 requestPermission 호출이 되면 Callback 함수가 호출됩니당.


    } else {

        // 다음 부분은 항상 허용일 경우에 해당이 됩니다.

        writeFile();

    }




권한 허용여부 확인하기


그 다음 Permission 체크 후 실행되는 Callback함수입니다.


@Override

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

    switch (requestCode) {

        case MY_PERMISSION_REQUEST_STORAGE:

            if (grantResults[0] == PackageManager.PERMISSION_GRANTED

                    && grantResults[1] == PackageManager.PERMISSION_GRANTED) {


                // 권한이 허용되었습니다. 문자를 발송합니다.


            } else {


                Log.d(TAG, "Permission always deny");


                // 항상 거부로 선택했을 경우입니다.

            }

            break;

    }




마무리 


Manifest에도 추가하고, 코드도 추가해서 버젼별로 잘 다루도록해용!!!


댓글
댓글쓰기 폼
공지사항
Total
42,219
Today
15
Yesterday
42
링크
TAG
more
«   2018/08   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
글 보관함