From bd114aef26eada7a75477b37ff1ea4845c8352cd Mon Sep 17 00:00:00 2001 From: Mikhail Chabanov Date: Thu, 29 Jan 2015 16:37:06 +0300 Subject: [PATCH 1/5] Gradle version updated --- build.gradle | 46 +++++++++++------------ gradle/wrapper/gradle-wrapper.jar | Bin 51348 -> 51010 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- proguard-rules.pro | 19 ++++++++++ 4 files changed, 44 insertions(+), 25 deletions(-) create mode 100644 proguard-rules.pro diff --git a/build.gradle b/build.gradle index ed7a1cd..fac3787 100644 --- a/build.gradle +++ b/build.gradle @@ -1,51 +1,51 @@ +import com.android.builder.core.BuilderConstants +import org.gradle.api.tasks.wrapper.Wrapper + + buildscript { repositories { - jcenter() + mavenCentral() } + dependencies { - classpath 'com.android.tools.build:gradle:0.12.2' + classpath 'com.android.tools.build:gradle:1.0.1' } } -apply plugin: 'android-library' - -repositories { -} +apply plugin: 'com.android.library' android { compileSdkVersion 19 buildToolsVersion "20.0.0" defaultConfig { - applicationId "com.shortcutBadger" minSdkVersion 8 - targetSdkVersion 19 + targetSdkVersion 21 versionCode 1 versionName "1.0" - } - buildTypes { - release { - runProguard false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + buildTypes { + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } } } - } android.libraryVariants.all { variant -> - def name = variant.buildType.name - if (name.equals(com.android.builder.core.BuilderConstants.DEBUG)) { - return; // Skip debug builds. - } - def task = project.tasks.create "jar${name.capitalize()}", Jar - task.dependsOn variant.javaCompile - task.from variant.javaCompile.destinationDir - artifacts.add('archives', task); + def name = variant.buildType.name + if (name.equals(BuilderConstants.DEBUG)) { + return; // Skip debug builds. + } + def task = project.tasks.create "jar${name.capitalize()}", Jar + task.dependsOn variant.javaCompile + task.from variant.javaCompile.destinationDir + artifacts.add('archives', task); } dependencies { } task wrapper(type: Wrapper) { - gradleVersion = '1.12' + gradleVersion = '2.1.1' } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 0087cd3b18659b5577cf6ad3ef61f8eb9416ebba..2322723c7ed5f591adfa4c87b6c51932f591249a 100644 GIT binary patch delta 10937 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 Date: Thu, 29 Jan 2015 16:46:57 +0300 Subject: [PATCH 2/5] Removed idea project file (.iml) Different versions of Idea/AStudio make changes in this file and ask to commit all the time. --- ShortcutBadger.iml | 94 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 81 insertions(+), 13 deletions(-) diff --git a/ShortcutBadger.iml b/ShortcutBadger.iml index 3ff8abe..4d4fcba 100644 --- a/ShortcutBadger.iml +++ b/ShortcutBadger.iml @@ -1,23 +1,91 @@ - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - From 2a18a1dba02fa2c130348c83668ad14bd02aeeec Mon Sep 17 00:00:00 2001 From: Mikhail Chabanov Date: Thu, 29 Jan 2015 17:23:12 +0300 Subject: [PATCH 3/5] Bug fixed. Cursor was not closed. --- .../com/shortcutBadger/impl/CloseHelper.java | 11 +++++++ .../impl/SamsungHomeBadger.java | 31 ++++++++++--------- .../shortcutBadger/impl/hTCHomeBadger.java | 7 +++-- 3 files changed, 32 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/shortcutBadger/impl/CloseHelper.java diff --git a/src/main/java/com/shortcutBadger/impl/CloseHelper.java b/src/main/java/com/shortcutBadger/impl/CloseHelper.java new file mode 100644 index 0000000..ca30ab7 --- /dev/null +++ b/src/main/java/com/shortcutBadger/impl/CloseHelper.java @@ -0,0 +1,11 @@ +package com.shortcutBadger.impl; + +import android.database.Cursor; + +public class CloseHelper { + public static void close(Cursor cursor) { + if (cursor != null && !cursor.isClosed()) { + cursor.close(); + } + } +} diff --git a/src/main/java/com/shortcutBadger/impl/SamsungHomeBadger.java b/src/main/java/com/shortcutBadger/impl/SamsungHomeBadger.java index c9e8703..3a5a2b1 100644 --- a/src/main/java/com/shortcutBadger/impl/SamsungHomeBadger.java +++ b/src/main/java/com/shortcutBadger/impl/SamsungHomeBadger.java @@ -26,20 +26,23 @@ public SamsungHomeBadger(Context context) { protected void executeBadge(int badgeCount) throws ShortcutBadgeException { Uri mUri = Uri.parse(CONTENT_URI); ContentResolver contentResolver = mContext.getContentResolver(); - Cursor cursor = contentResolver.query(mUri, new String[]{"_id",}, "package=?", new String[]{getContextPackageName()}, null); - if (cursor.moveToNext()) { - int id = cursor.getInt(0); - ContentValues contentValues = new ContentValues(); - contentValues.put("badgecount", badgeCount); - contentResolver.update(mUri, contentValues, "_id=?", new String[]{String.valueOf(id)}); - } else { - ContentValues contentValues = new ContentValues(); - contentValues.put("package", getContextPackageName()); - contentValues.put("class", getEntryActivityName()); - contentValues.put("badgecount", badgeCount); - contentResolver.insert(mUri, contentValues); + Cursor cursor = null; + try { + cursor = contentResolver.query(mUri, new String[]{"_id",}, "package=?", new String[]{getContextPackageName()}, null); + if (cursor.moveToNext()) { + int id = cursor.getInt(0); + ContentValues contentValues = new ContentValues(); + contentValues.put("badgecount", badgeCount); + contentResolver.update(mUri, contentValues, "_id=?", new String[]{String.valueOf(id)}); + } else { + ContentValues contentValues = new ContentValues(); + contentValues.put("package", getContextPackageName()); + contentValues.put("class", getEntryActivityName()); + contentValues.put("badgecount", badgeCount); + contentResolver.insert(mUri, contentValues); + } + } finally { + CloseHelper.close(cursor); } - - } } diff --git a/src/main/java/com/shortcutBadger/impl/hTCHomeBadger.java b/src/main/java/com/shortcutBadger/impl/hTCHomeBadger.java index a39c75d..991edbe 100644 --- a/src/main/java/com/shortcutBadger/impl/hTCHomeBadger.java +++ b/src/main/java/com/shortcutBadger/impl/hTCHomeBadger.java @@ -30,11 +30,14 @@ protected void executeBadge(int badgeCount) throws ShortcutBadgeException { String appName = mContext.getResources().getText(mContext.getResources().getIdentifier("app_name", "string", getContextPackageName())).toString(); + Cursor cursor = null; boolean supportNotifyCount = true; try { - Cursor cursor = contentResolver.query(mUri, new String[]{"notifyCount"}, "title=?", new String[]{appName}, null); + cursor = contentResolver.query(mUri, new String[]{"notifyCount"}, "title=?", new String[]{appName}, null); } catch (Throwable e) { supportNotifyCount = false; + } finally { + CloseHelper.close(cursor); } if (supportNotifyCount) { @@ -51,7 +54,5 @@ protected void executeBadge(int badgeCount) throws ShortcutBadgeException { contentValues.put("icon", bytes); contentResolver.update(mUri, contentValues, "title=?", new String[]{appName}); } - - } } From aa2459ed17deeea487a48818cc0078ce36b85c6c Mon Sep 17 00:00:00 2001 From: Mikhail Chabanov Date: Wed, 4 Feb 2015 17:54:25 +0300 Subject: [PATCH 4/5] Bug fixed. User may change EntryActivity. If it happen, badger won't work. So we need to update 'class' field in DB every time even if a record already inserted. --- .../impl/SamsungHomeBadger.java | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/shortcutBadger/impl/SamsungHomeBadger.java b/src/main/java/com/shortcutBadger/impl/SamsungHomeBadger.java index 3a5a2b1..c1b4602 100644 --- a/src/main/java/com/shortcutBadger/impl/SamsungHomeBadger.java +++ b/src/main/java/com/shortcutBadger/impl/SamsungHomeBadger.java @@ -17,6 +17,7 @@ */ public class SamsungHomeBadger extends ShortcutBadger { private static final String CONTENT_URI = "content://com.sec.badge/apps?notify=true"; + private static final String[] CONTENT_PROJECTION = new String[]{"_id",}; public SamsungHomeBadger(Context context) { super(context); @@ -28,21 +29,27 @@ protected void executeBadge(int badgeCount) throws ShortcutBadgeException { ContentResolver contentResolver = mContext.getContentResolver(); Cursor cursor = null; try { - cursor = contentResolver.query(mUri, new String[]{"_id",}, "package=?", new String[]{getContextPackageName()}, null); - if (cursor.moveToNext()) { - int id = cursor.getInt(0); - ContentValues contentValues = new ContentValues(); - contentValues.put("badgecount", badgeCount); - contentResolver.update(mUri, contentValues, "_id=?", new String[]{String.valueOf(id)}); + cursor = contentResolver.query(mUri, CONTENT_PROJECTION, "package=?", new String[]{getContextPackageName()}, null); + if (cursor != null) { + while (cursor.moveToNext()) { + int id = cursor.getInt(0); + ContentValues contentValues = getContentValues(badgeCount); + contentResolver.update(mUri, contentValues, "_id=?", new String[]{String.valueOf(id)}); + } } else { - ContentValues contentValues = new ContentValues(); - contentValues.put("package", getContextPackageName()); - contentValues.put("class", getEntryActivityName()); - contentValues.put("badgecount", badgeCount); + ContentValues contentValues = getContentValues(badgeCount); contentResolver.insert(mUri, contentValues); } } finally { CloseHelper.close(cursor); } } + + private ContentValues getContentValues(int badgeCount) { + ContentValues contentValues = new ContentValues(); + contentValues.put("package", getContextPackageName()); + contentValues.put("class", getEntryActivityName()); + contentValues.put("badgecount", badgeCount); + return contentValues; + } } From 4c4b3648b42e28fac2cbaf24ba8343dffa12a5ca Mon Sep 17 00:00:00 2001 From: Mikhail Chabanov Date: Wed, 4 Feb 2015 18:04:13 +0300 Subject: [PATCH 5/5] New custom launchers' package names added --- .../com/shortcutBadger/ShortcutBadger.java | 71 ++++++++++++++----- ...{hTCHomeBadger.java => HTCHomeBadger.java} | 4 +- 2 files changed, 55 insertions(+), 20 deletions(-) rename src/main/java/com/shortcutBadger/impl/{hTCHomeBadger.java => HTCHomeBadger.java} (95%) diff --git a/src/main/java/com/shortcutBadger/ShortcutBadger.java b/src/main/java/com/shortcutBadger/ShortcutBadger.java index 995abbb..fe677dc 100644 --- a/src/main/java/com/shortcutBadger/ShortcutBadger.java +++ b/src/main/java/com/shortcutBadger/ShortcutBadger.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.os.Build; import com.shortcutBadger.impl.*; /** @@ -15,11 +16,16 @@ * To change this template use File | Settings | File Templates. */ public abstract class ShortcutBadger { - private static final String HOME_PACKAGE_SONY = "com.sonyericsson.home"; - private static final String HOME_PACKAGE_SAMSUNG = "com.sec.android.app.launcher"; - private static final String HOME_PACKAGE_LG = "com.lge.launcher2"; + private static final String HOME_PACKAGE_SONY1 = "com.sonyericsson.home"; + private static final String HOME_PACKAGE_SONY2 = "com.anddoes.launcher"; + private static final String HOME_PACKAGE_SAMSUNG1 = "com.sec.android.app.launcher"; + private static final String HOME_PACKAGE_SAMSUNG2 = "com.sec.android.app.twlauncher"; + private static final String HOME_PACKAGE_LG1 = "com.lge.launcher"; + private static final String HOME_PACKAGE_LG2 = "com.lge.launcher2"; private static final String HOME_PACKAGE_HTC = "com.htc.launcher"; - private static final String HOME_PACKAGE_ANDROID = "com.android.launcher"; + private static final String HOME_PACKAGE_ANDROID1 = "com.android.launcher"; + private static final String HOME_PACKAGE_ANDROID2 = "com.android.launcher2"; + private static final String HOME_PACKAGE_ANDROID3 = "com.google.android.googlequicksearchbox"; private static final String MESSAGE_NOT_SUPPORT_BADGE_COUNT = "ShortBadger is currently not support the badgeCount \"%d\""; @@ -28,6 +34,8 @@ public abstract class ShortcutBadger { private static final int MIN_BADGE_COUNT = 0; private static final int MAX_BADGE_COUNT = 99; + private static ShortcutBadger sShortcutBadger; + private ShortcutBadger() { } @@ -53,28 +61,55 @@ public static void setBadge(Context context, int badgeCount) throws ShortcutBadg String currentHomePackage = resolveInfo.activityInfo.packageName; //different home launcher packages use different way adding badges - ShortcutBadger mShortcutBadger = null; - if (HOME_PACKAGE_SONY.equals(currentHomePackage)) { - mShortcutBadger = new SonyHomeBadger(context); - } else if (HOME_PACKAGE_SAMSUNG.equals(currentHomePackage)) { - mShortcutBadger = new SamsungHomeBadger(context); - } else if (HOME_PACKAGE_LG.equals(currentHomePackage)) { - mShortcutBadger = new LGHomeBadger(context); - } else if (HOME_PACKAGE_HTC.equals(currentHomePackage)) { - mShortcutBadger = new hTCHomeBadger(context); - } else if (HOME_PACKAGE_ANDROID.equals(currentHomePackage)) { - mShortcutBadger = new AndroidHomeBadger(context); - } + ShortcutBadger shortcutBadger = getShortcutBadger(currentHomePackage, context); //not support this home launcher package - if (mShortcutBadger == null) { + if (shortcutBadger == null) { String exceptionMessage = String.format(MESSAGE_NOT_SUPPORT_THIS_HOME, currentHomePackage); throw new ShortcutBadgeException(exceptionMessage); } - mShortcutBadger.executeBadge(badgeCount); + shortcutBadger.executeBadge(badgeCount); } + private static ShortcutBadger getShortcutBadger(String currentHomePackage, Context context){ + if(sShortcutBadger != null) { + return sShortcutBadger; + } + + // Workaround for Meizu: + // Meizu declare 'com.android.launcher', but hold something else + // Icons get duplicated on restart after badge change + if(Build.MANUFACTURER.toLowerCase().contains("meizu")) + { + return null; + } + + switch (currentHomePackage){ + case HOME_PACKAGE_SONY1: + case HOME_PACKAGE_SONY2: + sShortcutBadger = new SonyHomeBadger(context); + break; + case HOME_PACKAGE_SAMSUNG1: + case HOME_PACKAGE_SAMSUNG2: + sShortcutBadger = new SamsungHomeBadger(context); + break; + case HOME_PACKAGE_LG1: + case HOME_PACKAGE_LG2: + sShortcutBadger = new LGHomeBadger(context); + break; + case HOME_PACKAGE_HTC: + sShortcutBadger = new HTCHomeBadger(context); + break; + case HOME_PACKAGE_ANDROID1: + case HOME_PACKAGE_ANDROID2: + case HOME_PACKAGE_ANDROID3: + sShortcutBadger = new AndroidHomeBadger(context); + break; + } + return sShortcutBadger; + } + protected String getEntryActivityName() { ComponentName componentName = mContext.getPackageManager().getLaunchIntentForPackage(mContext.getPackageName()).getComponent(); return componentName.getClassName(); diff --git a/src/main/java/com/shortcutBadger/impl/hTCHomeBadger.java b/src/main/java/com/shortcutBadger/impl/HTCHomeBadger.java similarity index 95% rename from src/main/java/com/shortcutBadger/impl/hTCHomeBadger.java rename to src/main/java/com/shortcutBadger/impl/HTCHomeBadger.java index 991edbe..5385cec 100644 --- a/src/main/java/com/shortcutBadger/impl/hTCHomeBadger.java +++ b/src/main/java/com/shortcutBadger/impl/HTCHomeBadger.java @@ -16,10 +16,10 @@ * Time: 下午7:15 * To change this template use File | Settings | File Templates. */ -public class hTCHomeBadger extends ShortcutBadger { +public class HTCHomeBadger extends ShortcutBadger { private static final String CONTENT_URI = "content://com.htc.launcher.settings/favorites?notify=true"; - public hTCHomeBadger(Context context) { + public HTCHomeBadger(Context context) { super(context); }