关于Android Launcher图标上面动态改变数字的实现

由于项目需要使用到类似小米应用商店的图标数字提示功能,谷歌百度了许多文章都没看到有真正意义上的实现(没有在国外网站上搜索),有实现在APP内部的一个ImageView上面更新数字的,当然这种太简单无非我们想要的,也要通过快捷方式更新的,这感觉也有点鸡肋,最接近真正意义上实现的是写一个自己的Home,然后在Home里面实现更新图标的数量提示,但是也不靠谱,为了一个APP的数量更新而去写一个HOME,并且别人也不会安装你这个HOME的。

下面贴上接近真正意义上实现的HOME部分代码,虽然没有满足需求,但是这种想法可能也是谷歌的HOME的内部实现了(谷歌HOME中的短信数量提示等,像我们平时看到的图标有数量提示的都是在别人的HOME中早就写了类似功能了的,例如小米中的应用商店,三星HOME中的邮件、短信)。

效果图:

首先要有个activity能成为Home,所以它的intent filter配置如下

 <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
这样按home键它就能出现了,

第二个是系统自带的home
这个activity非常简单,用一个gridview列出系统中所有的launcher,gridview的adapter的getview方法中,对特定的launcher进行处理,显示右上角那个红字

列出所有的launcher代码如下

PackageManager manager = getPackageManager();

		Intent mainIntent = new Intent(Intent.ACTION_MAIN);
		mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

		final List<ResolveInfo> apps = manager.queryIntentActivities(
				mainIntent, 0);




ResolveInfo类loadLabel(manager)可以得到app的名字,info.loadIcon(manager)可以得到app的图标,
info.activityInfo.packageName可以得到app的包名.我就是根据app的包名,在adapter的getView方法中为特定的app特殊处理.

顺便吐槽下android的文档,manager.queryIntentActivities的第二个参数,说的太含糊其辞了.我也不清楚这里用
个0到底啥意思.

在这个自定义的home app中,可以放一个BroadcastReceiver,接收特定的消息后,更新gridview
比如我这里在每次收到短信后,就让短信那个app的数字加1,然后调用adapter的notifyDataSetChanged方法.

这样telnet到模拟器上,使用sms send 10086 content命令,就可以使那个数字递增,达到动态更新的效果

当然了,要完成一个完美的Home application,还有很多很多工作要做......

 

 

实现内容转自:http://www.myexception.cn/android/756559.html

 

转载于:https://www.cnblogs.com/wubingshenyin/p/3630287.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值