Notice
Recent Posts
Recent Comments
Link
투케이2K
37. (TWOK/LOGIC) [Android] 마스터 관리자 앱 제작 시 로그인 수행 시 필요 초기 퍼미션 권한 요청 로직 본문
투케이2K 로직정리
37. (TWOK/LOGIC) [Android] 마스터 관리자 앱 제작 시 로그인 수행 시 필요 초기 퍼미션 권한 요청 로직
투케이2K 2023. 11. 9. 20:29[로직 정리]
정리 로직 : Android
상태 : [Android] 마스터 관리자 앱 제작 시 로그인 수행 시 필요 초기 퍼미션 권한 요청 로직
[설 명]
[1] : 로그인 화면 접속 시 >> checkSelfPermission 을 사용해서 요청 할 수 있는 권한 요청 수행
[2] : 로그인 화면 버튼 클릭 이벤트 발생 >> 시스템적으로 추가로 부여할 권한 체크 (ex : 파일 액세스, 절전 모드 제외)
[3] : 시스템적으로 [필요] 권한이 부여되어 있지 않은 경우 >> 관리자 앱은 모든 권한 부여가 필요합니다. [필요] 권한을 모두 설정해주세요. [팝업창] 표시
[4] : [리스트 팝업창] 에서 특정 [필요] 권한 인덱스 클릭 시 >> 시스템 권한 부여 설정 창 Intent 이동 수행
[5] : 예시 소스 코드 첨부
// ----------------------------------------------------------------
String errorMessage = "";
// ----------------------------------------------------------------
String permissionArray [] = new String[5];
// ----------------------------------------------------------------
if (C_Permission.getFileAccessPermisseionEnable(LoginActivity.this) == true) { // TODO [파일 액세스] : [정상 부여]
permissionArray[0] = "[정상] : 파일 액세스 권한";
}
else {
permissionArray[0] = "[필요] : 파일 액세스 권한";
errorMessage += " [파일 액세스 권한 : NO] ";
}
// ----------------------------------------------------------------
if (C_Permission.getAppInstallPermisseionEnable(LoginActivity.this) == true) { // TODO [특정 앱 설치] : [정상 부여]
permissionArray[1] = "[정상] : 앱 설치 권한";
}
else {
permissionArray[1] = "[필요] : 앱 설치 권한";
errorMessage += " [앱 설치 권한 : NO] ";
}
// ----------------------------------------------------------------
if (C_Permission.checkQueryAllPackages(LoginActivity.this) == true) { // TODO [QUERY_ALL_PACKAGES] : [정상 부여]
permissionArray[2] = "[정상] : 패키지 접근 권한";
}
else {
permissionArray[2] = "[필요] : 패키지 접근 권한";
errorMessage += " [패키지 접근 권한 : NO] ";
}
// ----------------------------------------------------------------
if (C_App.getAppWhiteListReg(LoginActivity.this) == true){ // TODO [앱 화이트 리스트 등록] : [정상 부여]
permissionArray[3] = "[정상] : 앱 화이트 리스트 등록";
}
else {
permissionArray[3] = "[필요] : 앱 화이트 리스트 등록";
errorMessage += " [앱 화이트 리스트 등록 : NO] ";
}
// ----------------------------------------------------------------
if (C_StateCheck.getGpsEnable(LoginActivity.this) == true) { // TODO [GPS 권한 체크] : [정상 부여]
permissionArray[4] = "[정상] : GPS 위치 권한";
}
else {
permissionArray[4] = "[필요] : GPS 위치 권한";
errorMessage += " [GPS 위치 권한 : NO] ";
}
// ----------------------------------------------------------------
// [에러 메시지 널 체크]
if (C_Util.stringNotNull(errorMessage) == true){
// [에러 팝업창 알림]
C_Ui_View.observablePermissionListView(LoginActivity.this, "알 림", permissionArray, "닫기")
.subscribeOn(AndroidSchedulers.mainThread()) // [Observable (생성자) 로직을 IO 스레드에서 실행 : 백그라운드]
.observeOn(Schedulers.io()) // [Observer (관찰자) 로직을 메인 스레드에서 실행]
.subscribe(new Observer<Integer>() { // [Observable.create 타입 지정]
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull Integer value) {
S_Log.ltw("================================================");
S_Log.cnt("["+ACTIVITY_NAME+" >> 퍼미션 리스트 팝업창 활성 :: onNext]");
S_Log.cnt("-----------------------------------------");
S_Log.cnt("[VALUE :: "+String.valueOf(value)+"]");
S_Log.lbw("================================================");
}
@Override
public void onError(@NonNull Throwable e) {
S_Log.lte("================================================");
S_Log.cnt("["+ACTIVITY_NAME+" >> 퍼미션 리스트 팝업창 활성 :: onError]");
S_Log.cnt("-----------------------------------------");
S_Log.cnt("[ERROR :: "+String.valueOf(e.getMessage())+"]");
S_Log.lbe("================================================");
}
@Override
public void onComplete() {
}
});
}
// ----------------------------------------------------------------
반응형
'투케이2K 로직정리' 카테고리의 다른 글
Comments