您的位置:首页 > 其它

Androd动态替换应用图标

2017-01-05 10:55 260 查看
动态替换应用图标主要针对一些节日活动,图标被动态替换,比如:某某APP双11。

废话不多说,直接上干货!

首先需要在功能清单文件里面配置对应的替代activity,只是作为一个导向,实际打开的还是以前的!

<application
android:allowBackup="true"
android:icon="@mipmap/icon"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity-alias
android:name=".MainAliasActivity"
android:enabled="true"
android:label="剑神"
android:icon="@mipmap/app"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<activity-alias
android:name=".MainGodActivity"
android:enabled="true"
android:label="天帝"
android:icon="@mipmap/icon"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>

</application>

两个伪装的Activity命名要各自命名,目标Activity是MainActivity

接下来是代码切换Activity,通过后台返回数据,是否切换图标

PackageManager pm=context.getPackageManager();
pm.setComponentEnabledSetting(activity.getComponentName(),PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
pm.setComponentEnabledSetting(new ComponentName(context,"com.example.lenovo.project.MainGodActivity"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);

我只粘贴了一部分,这就可以实现动态替换应用图标了,不过有两个小缺陷:必须退出应用才会替换,只能在本地埋图标
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐