투케이2K

79. (AndroidStudio/android/java) ShortcutBadger 라이브러리 사용해 뱃지 (badge) 표시 및 삭제 실시 본문

Android

79. (AndroidStudio/android/java) ShortcutBadger 라이브러리 사용해 뱃지 (badge) 표시 및 삭제 실시

투케이2K 2021. 3. 5. 07:44

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

 

//========== [build.gradle(Project) 파일] ==========
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.0"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()

        // ==== 추가 ====
        maven { url "https://jitpack.io" }

        // ==== 뱃지 사용 위함 ====
        mavenCentral()

    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}






//========== [build.gradle(Module:app) 파일] ==========
apply plugin: 'com.android.application'

android {
    compileSdkVersion 29

    defaultConfig {
        applicationId "kr.co.2k.myapplication"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

    //==== 노티피케이션에서 뱃지 표시 위함 ====
    implementation "me.leolin:ShortcutBadger:1.1.22@aar"

}

//========== [java - 뱃지 카운트 증가 메소드] ==========
public void setBadgeCount(){
	String saveBadgeCount = "";
	int badgeCount = 0;
	saveBadgeCount = S_Preference.getString(getApplication(), "BadgeCount");
	Log.d("---","---");
	Log.d("//===========//","================================================");
	Log.d("","\n"+"[A_Badge > setBadgeCount() 메소드 : 뱃지 카운트 확인 및 카운트 증가 실시]");
	Log.d("","\n"+"[현재개수 : "+String.valueOf(saveBadgeCount)+"]");
	if(saveBadgeCount != null && saveBadgeCount.length() > 0 && !saveBadgeCount.equals("")){
		Log.d("","\n"+"[추가후개수 : "+String.valueOf(Integer.parseInt(saveBadgeCount)+1)+"]");
	}
	else {
		Log.d("","\n"+"[추가후개수 : "+String.valueOf("1")+"]");
	}
	Log.d("//===========//","================================================");
	Log.d("---","---");
	try {
		if(saveBadgeCount != null && saveBadgeCount.length() > 0 && !saveBadgeCount.equals("")){ //TODO 널값이 아닐 경우
			badgeCount = Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"));
			++ badgeCount;
			S_Preference.setString(getApplication(), "BadgeCount", String.valueOf(badgeCount));
			ShortcutBadger.applyCount(getApplication(), Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"))); //for 1.1.4+
			ShortcutBadger.applyNotification(getApplication(), new Notification(), Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount")));
		}
		else { //TODO 널값일 경우
			S_Preference.setString(getApplication(), "BadgeCount", String.valueOf("0")); //널값일 경우 초기값 지정
			badgeCount = Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"));
			++ badgeCount;
			S_Preference.setString(getApplication(), "BadgeCount", String.valueOf(badgeCount));
			ShortcutBadger.applyCount(getApplication(), Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"))); //for 1.1.4+
			ShortcutBadger.applyNotification(getApplication(), new Notification(), Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount")));
		}
	}
	catch (Exception e){
		e.printStackTrace();
	}
}
//========== [java - 뱃지 카운트 전체 초기화 메소드] ==========
public void getBadgeAllClear(){
	String saveBadgeCount = "";
	int badgeCount = 0;
	saveBadgeCount = S_Preference.getString(getApplication(), "BadgeCount");
	try {
		if(saveBadgeCount != null && saveBadgeCount.length() > 0 && !saveBadgeCount.equals("")){ //TODO 널값이 아닐 경우
			if(Integer.parseInt(saveBadgeCount) > 0){ //TODO 1개이상 뱃지가 표시된 경우
				Log.d("---","---");
				Log.d("//===========//","================================================");
				Log.d("","\n"+"[A_Badge > getBadgeAllClear() 메소드 : 뱃지 카운트 확인 [개수 있음 - 전체 초기화 실시]]");
				Log.d("","\n"+"[현재개수 : "+String.valueOf(saveBadgeCount)+"]");
				Log.d("","\n"+"[삭제후개수 : "+String.valueOf("0")+"]");
				Log.d("//===========//","================================================");
				Log.d("---","---");
				S_Preference.setString(getApplication(), "BadgeCount", String.valueOf("0")); //0값으로 초기화 실시
				badgeCount = Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"));
				ShortcutBadger.removeCount(getApplication());
			}
			else{
				Log.d("---","---");
				Log.e("//===========//","================================================");
				Log.d("","\n"+"[A_Badge > getBadgeAllClear() 메소드 : 뱃지 카운트 확인 [개수 없음 - 0개]]");
				Log.d("","\n"+"[현재개수 : "+String.valueOf(saveBadgeCount)+"]");
				Log.d("","\n"+"[삭제후개수 : "+String.valueOf("0")+"]");
				Log.e("//===========//","================================================");
				Log.d("---","---");
				S_Preference.setString(getApplication(), "BadgeCount", String.valueOf("0")); //0값으로 초기화 실시
				badgeCount = Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"));
			}
		}
		else {
			Log.d("---","---");
			Log.e("//===========//","================================================");
			Log.d("","\n"+"[A_Badge > getBadgeAllClear() 메소드 : 뱃지 카운트 확인 [개수 없음]]");
			Log.d("","\n"+"[현재개수 : "+String.valueOf(saveBadgeCount)+"]");
			Log.d("","\n"+"[삭제후개수 : "+String.valueOf("0")+"]");
			Log.e("//===========//","================================================");
			Log.d("---","---");
			S_Preference.setString(getApplication(), "BadgeCount", String.valueOf("0")); //0값으로 초기화 실시
			badgeCount = Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"));
		}
	}
	catch (Exception e){
		e.printStackTrace();
	}
}
//========== [java - 뱃지 카운트 감소 메소드] ==========
public void getBadgeCountClear(){
	String saveBadgeCount = "";
	int badgeCount = 0;
	saveBadgeCount = S_Preference.getString(getApplication(), "BadgeCount");
	try {
		if(saveBadgeCount != null && saveBadgeCount.length() > 0 && !saveBadgeCount.equals("")){ //TODO 널값이 아닐 경우
			if(Integer.parseInt(saveBadgeCount) > 0){ //TODO 1개이상 뱃지가 표시된 경우
				Log.d("---","---");
				Log.d("//===========//","================================================");
				Log.d("","\n"+"[A_Badge > getBadgeCountClear() 메소드 : 뱃지 카운트 확인 [개수 있음 - 카운트 감소 실시]]");
				Log.d("","\n"+"[현재개수 : "+String.valueOf(saveBadgeCount)+"]");
				if(saveBadgeCount != null && saveBadgeCount.length() > 0 && !saveBadgeCount.equals("")){
					Log.d("","\n"+"[삭제후개수 : "+String.valueOf(Integer.parseInt(saveBadgeCount)-1)+"]");
				}
				else {
					Log.d("","\n"+"[삭제후개수 : "+String.valueOf("0")+"]");
				}
				Log.d("//===========//","================================================");
				Log.d("---","---");
				badgeCount = Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"));
				-- badgeCount;
				S_Preference.setString(getApplication(), "BadgeCount", String.valueOf(badgeCount));
				ShortcutBadger.applyCount(getApplication(), Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"))); //for 1.1.4+
				ShortcutBadger.applyNotification(getApplication(), new Notification(), Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount")));
			}
			else { //TODO 0개 뱃지가 저장된 경우
				Log.d("---","---");
				Log.e("//===========//","================================================");
				Log.d("","\n"+"[A_Badge > getBadgeCountClear() 메소드 : 뱃지 카운트 확인 [개수 없음]]");
				Log.d("","\n"+"[현재개수 : "+String.valueOf("0")+"]");
				Log.d("","\n"+"[삭제후개수 : "+String.valueOf("0")+"]");
				Log.e("//===========//","================================================");
				Log.d("---","---");
				S_Preference.setString(getApplication(), "BadgeCount", String.valueOf("0")); //널값일 경우 초기값 지정
				badgeCount = Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"));
				ShortcutBadger.applyCount(getApplication(), Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"))); //for 1.1.4+
				ShortcutBadger.applyNotification(getApplication(), new Notification(), Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount")));
			}
		}
		else { //TODO 널값일 경우
			Log.d("---","---");
			Log.e("//===========//","================================================");
			Log.d("","\n"+"[A_Badge > getBadgeCountClear() 메소드 : 뱃지 카운트 확인 [널 데이터]]");
			Log.d("","\n"+"[현재개수 : "+String.valueOf(saveBadgeCount)+"]");
			Log.d("","\n"+"[삭제후개수 : "+String.valueOf("0")+"]");
			Log.e("//===========//","================================================");
			Log.d("---","---");
			S_Preference.setString(getApplication(), "BadgeCount", String.valueOf("0")); //널값일 경우 초기값 지정
			badgeCount = Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"));
			ShortcutBadger.applyCount(getApplication(), Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount"))); //for 1.1.4+
			ShortcutBadger.applyNotification(getApplication(), new Notification(), Integer.parseInt(S_Preference.getString(getApplication(), "BadgeCount")));
		}
	}
	catch (Exception e){
		e.printStackTrace();
	}
}

/* =========================== */

[결과 출력]

/* =========================== */

[요약 설명]

1. 뱃지는 안드로이드 런처 바탕화면 아이콘 위에 표시되는 숫자입니다

2. S_Preference 클래스는 제가 생성한 프리퍼런스 관련 자료를 찾아보시면됩니다

/* =========================== */

반응형
Comments