android图标动态刷新,动态更新桌面图标 icon

您所在的位置:网站首页 安卓时钟图标动态 android图标动态刷新,动态更新桌面图标 icon

android图标动态刷新,动态更新桌面图标 icon

2024-06-26 22:19| 来源: 网络整理| 查看: 265

每当双11或者节假日,安卓的桌面图标会更换成带有节日元素的 icon,今天一探究竟,如何实现的。

需要用到的知识:activity-alias

alias 英 [ˈeɪliəs] 美 [ˈeliəs, ˈeljəs]

n. 别名,化名;

顾名思义,activity-alias并不是代表一个Activity,而是代表一个已经存在的Activity的别名。

它使用在清单文件中,类似Activity标签。它可用来设置某个Activity的快捷入口

activity-alias基本用法

android:exported=["true" | "false"]

android:icon="drawable resource"

android:label="string resource"

android:name="string"

android:permission="string"

android:targetActivity="string" >

...

属性说明

a0a884024b5b

属性表

代码示例

android:name=".ui.jingdong618"

android:enabled="false"

android:icon="@mipmap/normal_listner"

android:label="切换名称1"

android:targetActivity=".ui.MainActivity">

activity-alias 可以预存多个,然后根据条件去替换对应的icon,及设置桌面app 名称

android:name=".ui.MainActivity"

android:configChanges="orientation|screenSize|keyboardHidden"

android:launchMode="singleTask"

android:screenOrientation="portrait">

- - - -在Activity 中:

// 声明 要替换的别名

String currentString = "com.qhpc.fangzhou.ui.jingdong618";

// 替换方法

public void changeIcon(String activityPath) {

PackageManager pm = getPackageManager();

pm.setComponentEnabledSetting(getComponentName(),

PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

pm.setComponentEnabledSetting(new ComponentName(this, activityPath),

PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);

//重启桌面 加速显示

// restartSystemLauncher(pm);

}

public void restartSystemLauncher(PackageManager pm) {

ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);

Intent i = new Intent(Intent.ACTION_MAIN);

i.addCategory(Intent.CATEGORY_HOME);

i.addCategory(Intent.CATEGORY_DEFAULT);

List resolves = pm.queryIntentActivities(i, 0);

for (ResolveInfo res : resolves) {

if (res.activityInfo != null) {

am.killBackgroundProcesses(res.activityInfo.packageName);

}

}

}

@Override

protected void onDestroy() {

changeIcon();

super.onDestroy();

}

说明:

我们依赖后端接口告知我们需要替换桌面icon了,这时候,我们将预先放置的icon 对应的别名 currentString 赋值,然后存在本地(sharePreference )存储,为空才去替换, 放在启动页的onDestroy 方法中去替换是考虑到,这样替换的话跟随用户手动退出操作就做了桌面icon的替换,用户无感知;



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3