투케이2K

667. (Android/Java) REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 권한 부여 및 앱 화이트 리스트 등록 요청 실시 - white list 본문

Android

667. (Android/Java) REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 권한 부여 및 앱 화이트 리스트 등록 요청 실시 - white list

투케이2K 2023. 10. 5. 20:59

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

 

        // ---------------------------------------------------------------
        // [로직 처리 실시]
        // ---------------------------------------------------------------
        try {

            /**
             * ------------------------------------
             * [요약 설명]
             * ------------------------------------
             * 1. 화이트 리스트 :
             *
             * 도즈와 어플 대기모드의 대상으로부터 제외되는 목록 리스트 입니다
             * ------------------------------------
             * 2. 화이트 리스트 등록 조건 :
             *
             * 채팅, 메시지 앱 등 특정 조건의 앱만 등록이 가능
             * 해당 조건이 아닐 때 화이트 리스트 등록을 요청하는 경우에는 구글 플레이 스토어에 어플 등록이 안되는 경우가 발생
             * ------------------------------------
             * 3. AndroidManifest.xml 파일에 퍼미션 등록 :
             *
             * <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
             * ------------------------------------
             * 4. 참고 사이트 :
             *
             * https://blog.naver.com/kkh0977/222531950390
             * ------------------------------------
             * */


            // [PowerManager 생성]
            PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);


            // [마시멜로우 이상 버전 체크 및 해당 앱이 화이트 리스트에 등록 되었는지 확인]
            boolean isWhiteListing = false;
            if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
                isWhiteListing = pm.isIgnoringBatteryOptimizations(getPackageName());
            }
            
            
            // [화이트 리스트에 등록 되어 있지 않은 경우 >> 화이트 리스트 등록 요청]
            if (isWhiteListing == false){
                
                //Intent intent = new Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); // 휴대폰 최적화 설정 이동
                Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
                intent.setData(Uri.parse("package:" + getPackageName())); // 애플리케이션 패키지 명칭
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                startActivity(intent);

            }

        }
        catch (Exception e){
            e.printStackTrace();
        }

 

반응형
Comments