赞
踩
最近看到手机自带的时钟App可以实时的修改图标样式,就觉得很神奇。考虑到我自己要做的日记App可能也需要这样的功能,于是研究了一下,目前初步实现了修改图标及点击后进入不同Activity的功能,代码比较简单,点击这里download ZIP。
简单效果图:
原来 调用修改方法:
代码很简单,就2个部分:
1.修改manifest文件:
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="sxkeji.net.aliasdemo" >
-
- <application
- android:allowBackup="true"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name=".MainActivity"
- android:label="@string/app_name"
- android:exported="true">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
-
- <activity-alias
- android:enabled="true"
- android:label="应用名称"
- android:name=".MainActivity"
- android:targetActivity=".MainActivity">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- </intent-filter>
- </activity-alias>
-
- <activity
- android:name=".TestAlias"
- android:label="入口2"
- android:exported="true" >
- </activity>
- <activity-alias
- android:enabled="false"
- android:icon="@mipmap/git"
- android:label="@string/app_name"
- android:name=".TestAlias"
- android:targetActivity=".TestAlias">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- <category android:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- </activity-alias>
- </application>
-
- </manifest>

这里注意2个activity-alias的name、targetActivity对应的Activity名称要写自己要对应的。 具体activity-alias是什么后面介绍,可以先看看这篇博客:
一个app,多个入口图标,activity-alias实现多程序入口并显示指定view完成
2.Java代码修改:
- private void changeIcon() {
- PackageManager pm = getApplicationContext().getPackageManager();
- System.out.println(getComponentName());
- //去除旧图标,不去除的话会出现2个App图标
- pm.setComponentEnabledSetting(getComponentName(),
- PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
- PackageManager.DONT_KILL_APP);
- //显示新图标
- pm.setComponentEnabledSetting(new ComponentName(
- getBaseContext(),
- "sxkeji.net.aliasdemo.TestAlias"),
- PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- PackageManager.DONT_KILL_APP);
- }
适用场景:
比如电子商务类App推出新活动时可以通过服务器发送消息,在service里修改图标,吸引用户进入;
还有一些小清新App可以支持用户自定义App图标、名称,更人性化;
等等。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。