Notice
Recent Posts
Recent Comments
Link
투케이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 클래스는 제가 생성한 프리퍼런스 관련 자료를 찾아보시면됩니다
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments