본문 바로가기
모바일/Android

Neither user 10080 nor current process has android.permission.READ_PHONE_STATE

by 죠부니 2018. 7. 25.
반응형

either user 10080 nor current process has android.permission.READ_PHONE_STATE.


예전에 겪었던거같은 문제인데 또 일어났다.

키워드 : 런타임 퍼미션

- Android 6.0(API 레벨 23)이상은 앱이 실행되는 중에 권한을 부여한다.

https://developer.android.com/training/permissions/requesting


이지퍼미션 라이브러리를 이용하여 처리하였다.

https://github.com/googlesamples/easypermissions


build.gradle 파일에

implementation 'pub.devrel:easypermissions:1.2.0'

추가 설치당시 최신버전은 1.2.0 버전이다.


자세한 정보는 해당 문서볼것

https://firebaseopensource.com/projects/googlesamples/easypermissions/


MainActiviry.java에

implements EasyPermissions.PermissionCallbacks


onCreate에서 호출

  @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//퍼미션
String[] perms = {Manifest.permission.READ_PHONE_STATE};

if (EasyPermissions.hasPermissions(this, perms)) {
Logger.error("퍼미션 존재함");
appStart();
} else {
Logger.error("퍼미션 없음 권한요청");
EasyPermissions.requestPermissions(this, "앱실행을 위한 디바이스정보 권한이 필요합니다. 권한을 승인하시겠습니까?", 100, Manifest.permission.READ_PHONE_STATE);
}

}


@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

// Forward results to EasyPermissions
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}


@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
Logger.error("퍼미션 승인됨");
appStart();
}

@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
Logger.error("퍼미션 거절됨");
}


반응형