`
kabike
  • 浏览: 597975 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

android动态改变应用程序(app)的图标和文字

阅读更多
我的大概思路是自己写一个Home,代替系统自带的,在Home里画app的时候,改变图标和文字.
这里有个简单的效果图

首先要有个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,还有很多很多工作要做......
分享到:
评论
2 楼 kabike 2013-03-03  
yanshien 写道
楼主能发个源码学习下

早删了,不敢拿出来献丑
1 楼 yanshien 2013-02-27  
楼主能发个源码学习下

相关推荐

Global site tag (gtag.js) - Google Analytics