diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/AndroidManifest.xml | 2 | ||||
-rw-r--r-- | src/main/java/eu/siacs/conversations/utils/UnreadCountBadgeHelper.java | 50 |
2 files changed, 45 insertions, 7 deletions
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index abe427ba..eae7a264 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -15,6 +15,8 @@ <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT" /> + <uses-permission android:name="com.sec.android.provider.badge.permission.READ"/> + <uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/> <application android:allowBackup="true" diff --git a/src/main/java/eu/siacs/conversations/utils/UnreadCountBadgeHelper.java b/src/main/java/eu/siacs/conversations/utils/UnreadCountBadgeHelper.java index 3e194c05..55f10bed 100644 --- a/src/main/java/eu/siacs/conversations/utils/UnreadCountBadgeHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UnreadCountBadgeHelper.java @@ -1,8 +1,10 @@ package eu.siacs.conversations.utils; +import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.content.Intent; +import android.database.Cursor; import android.net.Uri; import android.util.Log; @@ -20,7 +22,8 @@ public class UnreadCountBadgeHelper { final String packageName = context.getPackageName(); final String activity = context.getPackageManager().getLaunchIntentForPackage(packageName).getComponent().getClassName(); updateTeslaUnreadApi(context, packageName, activity, count); - updateApexNotificationApi(context, packageName, activity, count); + //updateApexNotificationApi(context, packageName, activity, count); + updateSamsungApi(context, packageName, activity, count); } } @@ -34,12 +37,12 @@ public class UnreadCountBadgeHelper { final int count) { try { ContentValues contentValues = new ContentValues(); - contentValues.put("tag",packageName+"/"+activity); - contentValues.put("count",count); + contentValues.put("tag", packageName + "/" + activity); + contentValues.put("count", count); context.getContentResolver().insert( Uri.parse("content://com.teslacoilsw.notifier/unread_count"), contentValues - ); + ); } catch (IllegalArgumentException e) { return; } catch (Exception e) { @@ -55,10 +58,43 @@ public class UnreadCountBadgeHelper { final String activity, final int count) { Intent intent = new Intent("com.anddoes.launcher.COUNTER_CHANGED"); - intent.putExtra("package",packageName); + intent.putExtra("package", packageName); //intent.putExtra("class",packageName+"."+activity); - intent.putExtra("class",activity); - intent.putExtra("count",count); + intent.putExtra("class", activity); + intent.putExtra("count", count); context.sendBroadcast(intent); } + + private static void updateSamsungApi(final Context context, + final String packageName, + final String activity, + final int count) { + Uri mUri = Uri.parse("content://com.sec.badge/apps?notify=true"); + ContentResolver contentResolver = context.getContentResolver(); + Cursor cursor = null; + ContentValues contentValues = new ContentValues(); + contentValues.put("badgecount", count); + try { + cursor = contentResolver.query(mUri,new String[]{"_id","class"}, "package=?", new String[]{packageName}, null); + if (cursor != null) { + boolean entryActivityExist = false; + while (cursor.moveToNext()) { + int id = cursor.getInt(0); + contentResolver.update(mUri, contentValues, "_id=?", new String[]{String.valueOf(id)}); + if (activity.equals(cursor.getString(cursor.getColumnIndex("class")))) { + entryActivityExist = true; + } + } + if (!entryActivityExist) { + contentValues.put("package", packageName); + contentValues.put("class", activity); + contentResolver.insert(mUri, contentValues); + } + } + } finally { + if (cursor != null) { + cursor.close(); + } + } + } } |