android桌面图标更新,Android桌面图标实现
The ShortcutBadger makes your Android App show the count of unread messages as a badge on your App shortcut!
img
ShortcutBadger使用
主要实现badge生成和消除功能。
一般badge会配合Notifaction使用,故而在生成Notifaction的地方,调用badge生成方法。
而当App从后台返回前台时,调用badge清除方法。
测试运行效果
测试可行厂商
华为
三星
需调试厂商
小米
小米MIUI 6.0开始,发送通知自动生成桌面角标,且默认桌面角标数badge会根据通知ID个数自动累加,点击应用badge自动消失。同时,其提供开放API,可自定义badge个数。
针对小米,在调用端分开处理。
未开通桌面图标厂商
魅族
中兴
酷派
OPPO部分应用开通
最终代码
生成Notifaction和Badge时:
/**
* 生成通知和桌面角标
*/
private void setFlowNotifaction(Context context, Intent resultIntent, String title, String msg) {
mBadge++;
// 小米miui6.0以后根据通知自动生成badge,根据通知次数自动累加。调用ShortcutBadger会自动生成空通知,需调用以下修改badge
if (Build.MANUFACTURER.equalsIgnoreCase("Xiaomi") && Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) {
tryNewMiuiBadge(context, resultIntent, mBadge, title, msg, R.drawable.icon_app);
} else {
showNotifacitonBadge(context, resultIntent, mBadge, title, msg, R.drawable.icon_app);
}
}
private void showNotifacitonBadge(Context context, Intent resultIntent, int badge, String title, String msg, int drawIcon) {
PendingIntent pendingIntent = PendingIntent.getActivity(context,
0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(drawIcon)
.setContentTitle(title)
.setContentText(msg)
.setTicker(msg);
// mBuilder.setFullScreenIntent(pendingIntent, true);
mBuilder.setContentIntent(pendingIntent);
mBuilder.setAutoCancel(true);
// 设置通知的优先级
mBuilder.setPriority(NotificationCompat.PRIORITY_HIGH);
// Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
// // 设置通知的提示音
// mBuilder.setSound(alarmSound);
mBuilder.setDefaults(Notification.DEFAULT_ALL);
int mNotificationId = 10086;
NotificationManager mNotifyMgr = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
mNotifyMgr.notify(mNotificationId, mBuilder.build());
// 生成桌面角标
ShortcutBadger.applyCount(JApplication.getInstance(), badge);
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void tryNewMiuiBadge(Context context, Intent resultIntent, int badgeCount, String title, String msg, int drawIcon) {
PendingIntent pendingIntent = PendingIntent.getActivity(context,
0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(drawIcon)
.setContentTitle(title)
.setContentText(msg)
.setTicker(msg);
// mBuilder.setFullScreenIntent(pendingIntent, true);
mBuilder.setContentIntent(pendingIntent);
mBuilder.setAutoCancel(true);
// 设置通知的优先级
mBuilder.setPriority(NotificationCompat.PRIORITY_HIGH);
// Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
// // 设置通知的提示音
// mBuilder.setSound(alarmSound);
mBuilder.setDefaults(Notification.DEFAULT_ALL);
// int mNotificationId = 10086;
NotificationManager mNotifyMgr = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = mBuilder.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);
} catch (Exception e) {
e.printStackTrace();
}
mNotifyMgr.notify(0, notification);
}
消除Badge时:
App从后台返回前台都需要清除badge,故而现在Activity基类中做统一检测处理
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onResume(this);
// 小米miui6.0后,会自动清除badge,调用ShortcutBadger会自动生成空通知
if (mBadge > 0) {
if (Build.MANUFACTURER.equalsIgnoreCase("Xiaomi") && Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) {
mBadge = 0;
} else {
mBadge = 0;
ShortcutBadger.applyCount(this, 0);
}
}
}
android桌面图标更新,Android桌面图标实现相关推荐
- android 11 版本更新内容,android 11怎么更新 android 11更新方法
android 11怎么更新?在最近,谷歌和OPPO手机相继推出android 11,那我们该怎么将自己手机的Android版本升级到android 11呢,android 11怎么更新,下面就和小编 ...
- android 360自动更新,Android应用自动更新功能的实现!!!
大家好,发现半年没有更新博客了,最近一直都比较忙,决定在凌晨 英超 阿森纳VS富勒姆 中场休息的时候,给大家分享Android里应用版本更新功能这一块的实现. 一个好的应用软件都是需要好的维护,从初出 ...
- android view如何更新,android – 如何使用RemoteView更新通知?
以下是通过RemoteView更新通知的详细示例(此示例发生在扩展服务的类中,您可以在活动中使用它,BroadcastReceiver和其他Android组件): private static fin ...
- android 的检测更新,android 版本自动检测更新
[实例简介] [实例截图] [核心代码] package com.hiyo.game.pdk.tool; import java.io.File; import java.io.FileOutputS ...
- android电池电量更新,android 电池(三):android电池系统
一.电池系统结构 Android中的电池使用方式主要有三种:AC.USB.Battery 等不同的模式.在应用程序层次,通常包括了电池状态显示的功能.因此从 Android 系统的软件方面(包括驱动程 ...
- android apk 自动更新,Android自动更新APK
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 通过Service的方式(推荐使用JobService),在后台获取服务器的APK信息,然后下载到本地,通过调用系统安装 ...
- android eclipse自动更新,Android Eclipse 升级ADT到24.0.2完美解决方案
由于在线下载更新奇慢无不,所以会出现"假死"的状态,具有的网友说下了整整一晚上(8小时+)才下载完成,所以在线下载ADT工具可以说是相当不靠谱的.故我下面给大家介绍一种离线下载AD ...
- android支付宝动态更新,Android仿支付宝首页下拉刷新
题外话 学习了Behavior之后,发现效果都可以通过Behavior来实现,包括支付宝首页的下拉刷新效果,其重点效果指标在于下滑上部分的布局,同样能够进行下拉刷新,其下拉刷新的布局展开的位置在中间部 ...
- android wear2.0 更新,android wear2.0下载更新发布 更新内容详情
androidwear2.0下载更新内容: 本次更新发布后,谷歌还联合LG发布了首批支持AndroidWear2.0的两款智能手表--lgwatchsport/style,将于2月10日上市.下面一起 ...
最新文章
- SQL与NoSQL区别-读写性能
- MySql中启用InnoDB数据引擎的方法
- WebRTC端点检测使用中遇到的部分问题汇总
- leetcode-9-回文数
- angularjs中使用swiper时不起作用,最后出现空白位
- 网易邮箱大师如何屏蔽邮件 屏蔽垃圾邮件的方法步骤
- linux下更新JDK版本
- 【证明】【一题多解】—— 负梯度方向的证明
- 游戏设计的第一步:设计体验
- 盘点:12个超炫数据可视化工具
- 怎么将多个文本文件合并为一个文本文件
- 想做合格的产品经理,你需要这个证书
- 微信公众号开发:账号申请与接入
- 99乘法表,九九乘法表
- vs2019开发android so库
- iOS 字体集(图文并茂)
- 解决com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
- 初识VB(一)——浏览文件并载入外部…
- UVA 1637 - Double Patience(概率DP)
- 华擎主板bios设置图解_[华擎主板bios设置图解]详解华擎主板bios恢复出厂设置