[컴][안드로이드] 안드로이드 6(Marshmallow) 에서 READ_PHONE_STATE 권한 관련 이슈

마쉬멜로우 버그 / getLine1Number 버그 / getLine1Number 권한 관련


안드로이드 6(Marshmallow) 에서 READ_PHONE_STATE 권한 관련 이슈


보통 아래처럼 전화번호를 가져오게 되는데, Android 6에서 갑자기 문제가 발생했다.

TelephonyManager tm = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tm.getLine1Number();

갑자기 잘 동작하던 것이 SecurityException 을 발생시켰다.

이 때문에 혹시 permission 요청을 해야하나 하고, 요청을 해봤는데도 안됐다. 이미 permission 은 GRANTED 였다.
if (checkSelfPermission(READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
            return true;
        }


issue 2938

그래서 한참을 찾다가 결국 bug 인 것을 알았다.
해결 방법은 permission 을 검사하면 된다. 아래 답변을 확인하자.


아직까지 방법은 targetSdkVersion 의 버전을 낮춰놓아야 하는 듯 하다.

android {
    compileSdkVersion 23
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.ccccc"
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"




댓글 2개:

  1. 버그가 아니고 마쉬멜로우 부터는 사용자에게 퍼미션 정보를 허가 받도록 코드를 변경해야 합니다.

    답글삭제
  2. 네, 버그란 표현은 잘못된 듯 하네요. 감사합니다.

    답글삭제