Android实现动态改变app图标的示例代码
时间:2022-07-28
本文章向大家介绍Android实现动态改变app图标的示例代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文介绍了动态改变app图标,分享给大家,具体如下:
代码实现如下:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
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=".newsLuncherActivity"
android:enabled="false"
android:icon="@mipmap/app_logo"
android:label="@string/app_name"
android:targetActivity=".MainActivity"
<intent-filter
<action android:name="android.intent.action.MAIN" /
<category android:name="android.intent.category.LAUNCHER" /
</intent-filter
</activity-alias
</application
我们先来简单的分析一下上面的代码:
android:icon="@mipmap/app_logo"
android:label="@string/app_name"
这两个属性是用来设置图标和标签
android:name=".newsLuncherActivity"
别名的name设置成一个activity,尽量和一个<activity 的name保持一致,如果不设置成一个activity的名字,部分手机会有问题。
android:enabled="false"
是否是显示别名,默认是true。
android:targetActivity=".MainActivity"
指定别名启动的activity,一定要与原来启动入口activity的name保持一致,并且要在<activity 的标签下面。
添加<activity-alias 标签后,具体启动方式,我们可以在服务器端设置一个开关,当请求到要更改桌面图标时,我们就可以通过 PackageManager 对象提供的 setComponentEnabledSetting()方法关闭当前 Component 组件,并启动别名对应的 Component 组件,为了使得图标能够快速更换,我们可以加上重启Luncher应用代码,name是自己定义个类名,记住一定要传全路径,如:
com.ming.abner.changelauncher.newsLuncherActivity
private void changeLuncher(String name) {
PackageManager pm = getPackageManager();
pm.setComponentEnabledSetting(getComponentName(),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
pm.setComponentEnabledSetting(new ComponentName(MainActivity.this, name),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
//Intent 重启 Launcher 应用
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addCategory(Intent.CATEGORY_DEFAULT);
List<ResolveInfo resolves = pm.queryIntentActivities(intent, 0);
for (ResolveInfo res : resolves) {
if (res.activityInfo != null) {
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
am.killBackgroundProcesses(res.activityInfo.packageName);
}
}
}
别名<activity-alias 可以定义多个,对于不同时候就可以动态去更换不同的图标。
权限设置:
复制代码 代码如下:
<uses-permission android:name=”android.permission.KILL_BACKGROUND_PROCESSES” /
以上就是本文的全部内容,希望对大家的学习有所帮助。
- JSP第三篇【JavaBean的介绍、JSP的行为--JavaBean】
- Java基础-06.总结二维数组,面向对象
- 04 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之高并发优化
- 过滤器第一篇【介绍、入门、简单应用】
- 通过pl/sql来格式化sql(r4笔记第63天)
- 程序员如何写出杀手级的简历
- 过滤器第二篇【编码、敏感词、压缩、转义过滤器】
- JSP第二篇【内置对象的介绍、4种属性范围、应用场景】
- Struts2的配置和一个简单的例子
- 监听器第一篇【基本概念、Servlet各个监听器】
- 监听器第二篇【统计网站人数、自定义session扫描器、踢人小案例】
- 通俗易懂的分析如何用Python实现一只小爬虫,爬取拉勾网的职位信息
- JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
- 一条执行时间两天半的sql语句简化(r4笔记第62天)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Java8 Stream
- 性能测试必备知识(4)- 使用 stress 和 sysstat 分析平均负载过高的场景
- 高并发利器-guava分流与缓存
- 树莓派3b+组装+烧录retropie系统
- 使用Azure DevOps Pipeline实现.Net Core程序的CI
- 带你遨游USB世界
- C# 泛型中的数据类型判定与转换
- 评测Loki日志工具
- .Net微服务实战之负载均衡(上)
- ES 7.8 速成笔记(上)
- 利用Xtrabackup进行mysql增量备份和全量备份
- ES 7.8 速成笔记(中)
- 什么?字符串为空?
- PowerBI DAX 计算组 基础篇
- 45. Vue路由vue-router的基本使用