700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android图标动态刷新 动态更新桌面图标 icon

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

时间:2023-09-06 16:34:54

相关推荐

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

每当双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" >

...

属性说明

属性表

代码示例

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(),

PONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

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

PONENT_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的替换,用户无感知;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。