Badge
Badge copied to clipboard
Huawei devices
I tried the library on Huawei Mate 8 with no luck.
It was working on Samsung devices! Any fix I can do?
Appreciate any help or insights.
Need a huawei device to be able to make it work.
<uses-permission android:name="com.sec.android.provider.badge.permission.READ"/>
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/>
<!--for htc-->
<uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT"/>
<!--for sony-->
<uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE"/>
<uses-permission android:name="com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"/>
<!--for apex-->
<uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT"/>
<!--for solid-->
<uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE"/>
<!--for huawei-->
<uses-permission android:name="android.permission.INTERNET"/>
<!--for ZUK-->
<uses-permission android:name="android.permission.READ_APP_BADGE"/>
<!--for OPPO-->
<uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>
<!--for EvMe-->
<uses-permission android:name="me.everything.badger.permission.BADGE_COUNT_READ"/>
<uses-permission android:name="me.everything.badger.permission.BADGE_COUNT_WRITE"/>
add AndroidManifest.xml but not working.
and see http://obs.cn-north-1.myhwclouds.com/consumer/docattachment/87918b190abda6d7b7a568a7ef1dfc314cd9ad040faccf1a999dcff158ec7d79/badge.pdf
use this code : `Bundle bunlde = new Bundle(); bunlde.PutString("package", Application.Context.PackageName); string sn = Application.Context.PackageManager.GetLaunchIntentForPackage(Application.Context.PackageName).Component.ClassName;
bunlde.PutString("class", sn);
bunlde.PutInt("badgenumber", badgeNumber);
this.mContext.ContentResolver.Call(Android.Net.Uri.Parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, bunlde);`
I solved the problem with the following solution:
In AndroidManifest.xml
<!--Huawei--> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE "/>
In BadgeProviderFactory.cs
providers.Add("com.huawei.android.launcher", new HuaweiBadgeProvider());
In HuaweiBadgeProvider.cs
`public override void SetBadge(int badgeNumber) {
if (badgeNumber < 0)
{
return;
}
try
{
Bundle bundle = new Bundle();
bundle.PutString("package", Application.Context.PackageName);
string sn = mContext.PackageManager.GetLaunchIntentForPackage(Application.Context.PackageName).Component.ClassName;
bundle.PutString("class", sn);
bundle.PutInt("badgenumber", badgeNumber);
mContext.ContentResolver.Call(Android.Net.Uri.Parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, bundle);
}
catch (Exception ex)
{
Console.WriteLine("(Huawei) unable to set badge: " + ex.Message);
}
}
public override void ClearBadge()
{
SetBadge(0);
}`
I solved the problem with the following solution:
In AndroidManifest.xml
<!--Huawei--> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE "/>
In BadgeProviderFactory.cs
providers.Add("com.huawei.android.launcher", new HuaweiBadgeProvider());
In HuaweiBadgeProvider.cs
`public override void SetBadge(int badgeNumber) {
if (badgeNumber < 0) { return; } try { Bundle bundle = new Bundle(); bundle.PutString("package", Application.Context.PackageName); string sn = mContext.PackageManager.GetLaunchIntentForPackage(Application.Context.PackageName).Component.ClassName; bundle.PutString("class", sn); bundle.PutInt("badgenumber", badgeNumber); mContext.ContentResolver.Call(Android.Net.Uri.Parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, bundle); } catch (Exception ex) { Console.WriteLine("(Huawei) unable to set badge: " + ex.Message); } } public override void ClearBadge() { SetBadge(0); }`
Can I ask if you fixed it by extend the badgeProvider or recompile the whole package to dll?