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,还有很多很多工作要做......

猜你喜欢

转载自kabike.iteye.com/blog/1682117