Badge icon indicating copy to clipboard operation
Badge copied to clipboard

Huawei devices

Open alijundi opened this issue 7 years ago • 5 comments

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.

alijundi avatar Dec 12 '17 09:12 alijundi

Need a huawei device to be able to make it work.

alexrainman avatar May 20 '18 16:05 alexrainman

<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

Jockeyvb avatar May 27 '19 09:05 Jockeyvb

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);`

Jockeyvb avatar May 28 '19 03:05 Jockeyvb

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);
	}`

292886995 avatar Oct 27 '21 08:10 292886995

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?

hetcmnten avatar Dec 14 '21 07:12 hetcmnten