2016-07-31 95 views
2

我能够显示与下面的代码三星设备与应用程序图标徽章计数 -如何使用Redmi上的应用程序图标显示徽章数量?

<uses-permission android:name="com.sec.android.provider.badge.permission.READ" /> 
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" /> 

    Intent intent = new Intent("android.intent.action.BADGE_COUNT_UPDATE"); 
    intent.putExtra("badge_count", badgeCount); 
    intent.putExtra("badge_count_package_name", componentName.getPackageName()); 
    intent.putExtra("badge_count_class_name", componentName.getClassName()); 
sendBroadcast(intent); 

但我不能够达到这个上红米手机设备,虽然Facebook的,WhatsApp的等能。如果您知道动作意图和附加功能用于广播,请告诉我。感谢你的帮助。

+0

做你能够显示在MI徽章?如果是的话,你能分享一下怎么做吗? –

回答

1

也许,用户需要从设置中明确启用该选项。查看此处以供参考:badge count on launcher icon

+1

感谢您的回复。你是对的,他们可能必须启用,但是我面临的挑战是我无法弄清楚我必须使用什么权限字符串,以及我需要为Redmi设置什么意图字符串。从一家制造商到另一家制造商,我发现三星,HTC和索尼的情况各不相同。找不到关于Redmi的任何有用的文档。 –

0

代码来显示徽章MI/Xiomi手机

public static final String INTENT_ACTION = "android.intent.action.APPLICATION_MESSAGE_UPDATE"; 
public static final String EXTRA_UPDATE_APP_COMPONENT_NAME = "android.intent.extra.update_application_component_name"; 
public static final String EXTRA_UPDATE_APP_MSG_TEXT = "android.intent.extra.update_application_message_text"; 
private ResolveInfo resolveInfo; 

@Override 
public void executeBadge(Context context, ComponentName componentName, int badgeCount) throws ShortcutBadgeException { 
    try { 
     Class miuiNotificationClass = Class.forName("android.app.MiuiNotification"); 
     Object miuiNotification = miuiNotificationClass.newInstance(); 
     Field field = miuiNotification.getClass().getDeclaredField("messageCount"); 
     field.setAccessible(true); 
     try { 
      field.set(miuiNotification, String.valueOf(badgeCount == 0 ? "" : badgeCount)); 
     } catch (Exception e) { 
      field.set(miuiNotification, badgeCount); 
     } 
    } catch (Exception e) { 
     Intent localIntent = new Intent(
       INTENT_ACTION); 
     localIntent.putExtra(EXTRA_UPDATE_APP_COMPONENT_NAME, componentName.getPackageName() + "/" + componentName.getClassName()); 
     localIntent.putExtra(EXTRA_UPDATE_APP_MSG_TEXT, String.valueOf(badgeCount == 0 ? "" : badgeCount)); 
     if (BroadcastHelper.canResolveBroadcast(context, localIntent)) { 
      context.sendBroadcast(localIntent); 
     } 
    } 
    if (Build.MANUFACTURER.equalsIgnoreCase("Xiaomi")) { 
     tryNewMiuiBadge(context, badgeCount); 
    } 
} 

@TargetApi(Build.VERSION_CODES.JELLY_BEAN) 
private void tryNewMiuiBadge(Context context, int badgeCount) throws ShortcutBadgeException { 
    if (resolveInfo == null) { 
     Intent intent = new Intent(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_HOME); 
     resolveInfo = context.getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); 
    } 

    if (resolveInfo != null) { 
     NotificationManager mNotificationManager = (NotificationManager) context 
       .getSystemService(Context.NOTIFICATION_SERVICE); 
     Notification.Builder builder = new Notification.Builder(context) 
       .setContentTitle("") 
       .setContentText("") 
       .setSmallIcon(resolveInfo.getIconResource()); 
     Notification notification = builder.build(); 
     try { 
      Field field = notification.getClass().getDeclaredField("extraNotification"); 
      Object extraNotification = field.get(notification); 
      Method method = extraNotification.getClass().getDeclaredMethod("setMessageCount", int.class); 
      method.invoke(extraNotification, badgeCount); 
      mNotificationManager.notify(0, notification); 
     } catch (Exception e) { 
      throw new ShortcutBadgeException("not able to set badge", e); 
     } 
    } 
} 

这是从ShortcutBadger应用github上project link有关许可证(我没有想法复制的代码使用此代码/权限)

Mi specific badge showing file code

相关问题