diff --git a/.gitignore b/.gitignore
index 81dbb8a..1645c22 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,4 @@
build
.gradle
local.properties
-**/gradle.properties
\ No newline at end of file
+**/gradle.properties
diff --git a/README.md b/README.md
index 6814cbb..bae522e 100644
--- a/README.md
+++ b/README.md
@@ -70,4 +70,4 @@ LICENSE
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-
\ No newline at end of file
+
diff --git a/ShortcutBadger/build.gradle b/ShortcutBadger/build.gradle
index 86c2606..8f3fe7b 100644
--- a/ShortcutBadger/build.gradle
+++ b/ShortcutBadger/build.gradle
@@ -1,4 +1,5 @@
apply plugin: 'com.android.library'
+
android {
compileSdkVersion 19
diff --git a/ShortcutBadger/src/main/AndroidManifest.xml b/ShortcutBadger/src/main/AndroidManifest.xml
index f1b48fd..c1ddd27 100644
--- a/ShortcutBadger/src/main/AndroidManifest.xml
+++ b/ShortcutBadger/src/main/AndroidManifest.xml
@@ -23,4 +23,7 @@
+
+
+
diff --git a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/ShortcutBadger.java b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/ShortcutBadger.java
index c51ad78..62d4274 100644
--- a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/ShortcutBadger.java
+++ b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/ShortcutBadger.java
@@ -31,6 +31,7 @@ public abstract class ShortcutBadger {
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 HOME_PACKAGE_SOLID = "com.majeur.launcher";
private static final String MESSAGE_NOT_SUPPORT_BADGE_COUNT = "ShortBadger is currently not support the badgeCount \"%d\"";
@@ -78,7 +79,6 @@ public static void setBadge(Context context, int badgeCount) throws ShortcutBadg
} catch (Throwable e) {
throw new ShortcutBadgeException("Unable to execute badge:" + e.getMessage());
}
- shortcutBadger.executeBadge(badgeCount);
}
@@ -117,6 +117,8 @@ private static ShortcutBadger getShortcutBadger(String currentHomePackage, Conte
sShortcutBadger = new AdwHomeBadger(context);
} else if (HOME_PACKAGE_NOVA.equals(currentHomePackage)) {
sShortcutBadger = new NovaHomeBadger(context);
+ } else if (HOME_PACKAGE_SOLID.equals(currentHomePackage)) {
+ sShortcutBadger = new SolidHomeBadger(context);
}
diff --git a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SamsungHomeBadger.java b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SamsungHomeBadger.java
index ea9f2c5..aa79d45 100644
--- a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SamsungHomeBadger.java
+++ b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SamsungHomeBadger.java
@@ -30,11 +30,11 @@ protected void executeBadge(int badgeCount) throws ShortcutBadgeException {
if (cursor != null) {
while (cursor.moveToNext()) {
int id = cursor.getInt(0);
- ContentValues contentValues = getContentValues(badgeCount);
+ ContentValues contentValues = getContentValues(badgeCount, false);
contentResolver.update(mUri, contentValues, "_id=?", new String[]{String.valueOf(id)});
}
} else {
- ContentValues contentValues = getContentValues(badgeCount);
+ ContentValues contentValues = getContentValues(badgeCount, true);
contentResolver.insert(mUri, contentValues);
}
} finally {
@@ -42,11 +42,15 @@ protected void executeBadge(int badgeCount) throws ShortcutBadgeException {
}
}
- private ContentValues getContentValues(int badgeCount) {
+ private ContentValues getContentValues(int badgeCount, boolean isInsert) {
ContentValues contentValues = new ContentValues();
- contentValues.put("package", getContextPackageName());
- contentValues.put("class", getEntryActivityName());
+ if (isInsert) {
+ contentValues.put("package", getContextPackageName());
+ contentValues.put("class", getEntryActivityName());
+ }
+
contentValues.put("badgecount", badgeCount);
+
return contentValues;
}
}
diff --git a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SolidHomeBadger.java b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SolidHomeBadger.java
new file mode 100644
index 0000000..bdc2338
--- /dev/null
+++ b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/impl/SolidHomeBadger.java
@@ -0,0 +1,31 @@
+package me.leolin.shortcutbadger.impl;
+
+import android.content.Context;
+import android.content.Intent;
+
+import me.leolin.shortcutbadger.ShortcutBadgeException;
+import me.leolin.shortcutbadger.ShortcutBadger;
+
+/**
+ * @author MajeurAndroid
+ */
+public class SolidHomeBadger extends ShortcutBadger {
+
+ private static final String INTENT_UPDATE_COUNTER = "com.majeur.launcher.intent.action.UPDATE_BADGE";
+ private static final String PACKAGENAME = "com.majeur.launcher.intent.extra.BADGE_PACKAGE";
+ private static final String COUNT = "com.majeur.launcher.intent.extra.BADGE_COUNT";
+ private static final String CLASS = "com.majeur.launcher.intent.extra.BADGE_CLASS";
+
+ public SolidHomeBadger(Context context) {
+ super(context);
+ }
+
+ @Override
+ protected void executeBadge(int badgeCount) throws ShortcutBadgeException {
+ Intent intent = new Intent(INTENT_UPDATE_COUNTER);
+ intent.putExtra(PACKAGENAME, getContextPackageName());
+ intent.putExtra(COUNT, badgeCount);
+ intent.putExtra(CLASS, getEntryActivityName());
+ mContext.sendBroadcast(intent);
+ }
+}
diff --git a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/util/ImageUtil.java b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/util/ImageUtil.java
index ba822e3..8c67d04 100644
--- a/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/util/ImageUtil.java
+++ b/ShortcutBadger/src/main/java/me/leolin/shortcutbadger/util/ImageUtil.java
@@ -1,13 +1,12 @@
package me.leolin.shortcutbadger.util;
import android.content.Context;
-import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
import android.graphics.*;
import android.graphics.drawable.Drawable;
import me.leolin.shortcutbadger.ShortcutBadgeException;
import java.io.ByteArrayOutputStream;
-import java.util.List;
/**
* Created with IntelliJ IDEA.
@@ -41,19 +40,18 @@ public static byte[] bitmapToByteArray(Bitmap bitmap) {
public static byte[] drawBadgeOnAppIcon(Context context, int badgeCount) throws ShortcutBadgeException {
- Bitmap appIcon = null;
+ Bitmap appIcon;
String gText = String.valueOf(badgeCount);
- List packages = context.getPackageManager().getInstalledPackages(0);
- for (PackageInfo packageInfo : packages) {
- if (context.getPackageName().equals(packageInfo.packageName)) {
- Drawable drawable = packageInfo.applicationInfo.loadIcon(context.getPackageManager());
- appIcon = drawableToBitmap(drawable);
- }
+ try {
+ Drawable iconDrawable = context.getPackageManager().getApplicationIcon(context.getPackageName());
+ appIcon = drawableToBitmap(iconDrawable);
+ } catch (PackageManager.NameNotFoundException e) {
+ throw new ShortcutBadgeException("Could not load the app Icon");
}
if (appIcon == null) {
- throw new ShortcutBadgeException("count not load the app Icon");
+ throw new ShortcutBadgeException("Could not load the app Icon");
}
if (badgeCount == 0) {
@@ -78,38 +76,31 @@ public static byte[] drawBadgeOnAppIcon(Context context, int badgeCount) throws
float cx = appIcon.getWidth() - radius;
float cy = radius;
-
- Paint paint_red = new Paint();
- paint_red.setColor(Color.RED);
- Paint paint_white = new Paint();
- paint_white.setColor(Color.WHITE);
Canvas canvas = new Canvas(appIcon);
- canvas.drawCircle(cx, cy, radius, paint_white);
-
-
- canvas.drawCircle(cx, cy, radius * 6 / 7, paint_red);
-
-
- // new antialised Paint
- Paint paint_text = new Paint(Paint.ANTI_ALIAS_FLAG);
- // text color - #3D3D3D
- paint_text.setColor(Color.WHITE);
+ //ANTI_ALIAS to avoid glitched circles
+ Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
+ paint.setColor(Color.WHITE);
+ canvas.drawCircle(cx, cy, radius, paint);
+ paint.setColor(Color.RED);
+ canvas.drawCircle(cx, cy, radius * 6 / 7, paint);
+
+ paint.setColor(Color.WHITE);
// text size in pixels
- int textSize = (int)(radius*0.7);
+ int textSize = (int) (radius * 0.7);
if (gText.length() > 1) {
- textSize = (int)(radius*0.5);
+ textSize = (int) (radius * 0.5);
}
- paint_text.setTextSize((int) (textSize * scale));
- paint_text.setFakeBoldText(true);
+ paint.setTextSize((int) (textSize * scale));
+ paint.setFakeBoldText(true);
// draw text to the Canvas center
Rect bounds = new Rect();
- paint_text.getTextBounds(gText, 0, gText.length(), bounds);
+ paint.getTextBounds(gText, 0, gText.length(), bounds);
float bw = bounds.width() / 2;
if (gText.endsWith("1")) {
bw *= 1.25;
}
float bh = bounds.height() / 2;
- canvas.drawText(gText, cx - bw, cy + bh, paint_text);
+ canvas.drawText(gText, cx - bw, cy + bh, paint);
return bitmapToByteArray(appIcon);
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index bdbd9f4..58e9892 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
-#Wed Mar 04 10:08:25 CST 2015
+#Thu Mar 12 21:22:24 CST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME