반응형
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("퍼미션 거절됨");
}
반응형