-
2018-10-15 10:09:39
今天应客户得要求把原来得项目桌面图标更换一下,结果发现替换并清空了项目中的所有老图标之后,桌面上依然显示得是老图标,Clean 项目也不起作用,最终 重新启动手机+clean 项目后桌面图标更新成功。
更多相关内容 -
Android MTK Launcher3 替换桌面图标
2016-04-01 19:50:54packages\apps\Launcher3\src\com\android\launcher3\IconCache.java 获取应用程序的包名,给设置资源文件图标packages\apps\Launcher3\src\com\android\launcher3\IconCache.java
获取应用程序的包名,给设置资源文件图标
else if("com.android.calendar".equals(componentName.getPackageName())){
//calendar
Drawable drawable;
drawable = getFullResIcon(mContext.getResources(),
R.drawable.calendar_ic_launcher_calendar);
entry.icon = Utilities.createIconBitmap(drawable, mContext,true);
}
-
Android之动态更换桌面图标
2017-04-04 00:13:32Android之动态更换桌面图标文章链接知识点 动态更换APP 桌面icon的引述; activity组件及定义“同盟”组件activity-alias; PackageManager类进行启用/禁用组件; PackageInfo的简介; 新名词记录{PackageInfo:...Android之动态更换桌面图标
文章链接:http://blog.csdn.net/qq_16628781/article/details/69054325
知识点
- 动态更换APP 桌面icon的引述;
- activity组件及定义“同盟”组件activity-alias;
- PackageManager类进行启用/禁用组件;
- PackageInfo的简介;
- 新名词记录{PackageInfo:Androidmanifest.xml文件描述类}
概述
APP,在中国电商行业中,某宝和某东是行业的标杆。其中有一点挺让人好奇的,那就是在双十一临近之时,他们的APP桌面图标突然变成了带有双十一字样的图标。但是明明记得那段时间并没有更新过,那么唯一的可能就是本来就内置了双十一的图标,等快到双十一的时候在动态更换,然后过了双十一那段时间,又将APP的桌面图标变成普通的icon。
既然图标本来就在APP里头(或者是网络下载下来的,只是猜测,有知道的小伙伴可以给我留言),那么就很好奇了,它们的图标到底是怎么样进行动态的更换的呢?
探索1
对于Android来说,所有的activity都是一个组件,我们可以对每个组件进行管理。
关于程序的入口,我们知道android.intent.action.MAIN进行的指定的。<activity android:name=".HomeActivity" android:label="@string/app_name" android:theme="@style/AppThemeToolbar"> <intent-filter> //指定应用程序最先启动的Activity <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
对于android.intent.category.LAUNCHER,这个又是设置什么的呢?这个是决定应用程序是否显示在程序列表里头。
另外,还有一个activity-alias属性,这个属性可以用于创建多个不同的入口。用法如下所示:
<activity android:name=".HomeActivity" android:label="@string/app_name" android:theme="@style/AppThemeToolbar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!--name:组件名字--> <!--enabled:该组件是否启动--> <!--icon:组件图标--> <!--label:组件标签说明--> <!--targetActivity:组件的类--> <activity-alias android:name=".HomeActivity2" android:enabled="false" android:icon="@drawable/icon2" android:label="icon2" android:targetActivity=".HomeActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> <activity-alias android:name=".HomeActivity3" android:enabled="false" android:icon="@drawable/icon3" android:label="icon3" android:targetActivity=".HomeActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias>
如上面代码显示,这里有3个程序的入口,其中第二和第三个是被禁用掉的,如果enable缺省值,那么默认是true。既然可以XML中禁用,那么对应的也可以在代码中启动组件了。
探索2
APP的icon是对于整个包范围的,既然是要动用到APP包,那么是不是系统就给我们提供了一个管理整个包的类呢?事实上,系统给我们提供了PackageManager这个类,这个类能够获取到当前应用里不同类型的信息。定义了一系列比如的服务的字段常量,低功耗ble蓝牙,相机==,以及一系列有关包操作的抽象方法。此类可以管理所有的系统组件。
我们知道APP上每一个对象都是系统里的一个组件,那么我们可以在PackageManager类里面看到有关于组件的操作方法;
这个方法有以下比较重要的方法:
//设置特定组件是否可以启动方法 public abstract void setComponentEnabledSetting(ComponentName componentName, int newState, int flags); //相反,得到特定组件是否启动的方法 public abstract int getComponentEnabledSetting(ComponentName componentName);
参数1:组件的名称;
参数2:组件新的状态;
参数3:标志是否要killapp;
有了以上两个方法,我们就可以根据给定不同的组件名称+状态进行设置是否可用了。结合探索1里面定义的3个组件的启动和禁止情况,我们可以进行对应的enable操作。
结合使用
private PackageManager mPackageManager; //默认组件 private ComponentName componentNameDefault; private ComponentName componentName2; private ComponentName componentName3; /** * 设置第icon2图标生效 */ private void enableComponentName2() { disableComponent(componentNameDefault); disableComponent(componentName3); enableComponent(componentName2); } /** * 设置第icon3图标生效 */ private void enableComponentName3() { disableComponent(componentNameDefault); disableComponent(componentName2); enableComponent(componentName3); } /** * 启动组件 * * @param componentName 组件名 */ private void enableComponent(ComponentName componentName) { //此方法用以启用和禁用组件,会覆盖Androidmanifest文件下定义的属性 mPackageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); } /** * 禁用组件 * * @param componentName 组件名 */ private void disableComponent(ComponentName componentName) { mPackageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } //最后调用 public void pmTest() { //获取到包管理类实例 mPackageManager = getPackageManager(); //得到此activity的全限定名 componentNameDefault = getComponentName(); //根据全限定名创建一个组件,即activity-alias 节点下的name:HomeActivity2 对应的组件 componentName2 = new ComponentName(getBaseContext(), "com.yaojt.HomeActivity2"); componentName3 = new ComponentName(getBaseContext(), "com.yaojt.HomeActivity3"); String action = getActionFromServer();//从后台获取到应该使用那一个组件,或者根据时间来判断 if ("comp2".equals(action)){ enableComponentName2(); }else if ("comp3".equals(action)){ enableComponentName3(); } //如果没有,则显示默认图标 }
通过以上的代码,可以清楚的看到,如何获取已经在XML文件里面定义好的组件。然后根据不同需求,来启用或者禁止对应的组件,从而达到更新APP桌面图标的功能。(可能需要一段时间刷新,才能看到新的APP桌面图标)
课外知识
PackageInfo:装载Androidmanifest.xml文件所有信息的类。
所有的信息都来自AndroidManifest.xml文件;例如,包名packageName、版本号versionCode、sharedUserId共享id、apk第一次和最后一次安装时间、声明的activity,service、receiver、provider和请求的权限等等的信息。
总结
以上就是其中一种动态桌面更换图标的方法,需要的是预先放入需要更换的icon进去,或许还可以支持动态的设置icon,但是这部分我还没有仔细的去研究。如果你知道,请留言告知我,大家共同学习进步。
如有任何问题,请及时与我联系。谢谢
-
VB 生成的EXE怎么更换桌面图标
2015-12-29 22:55:52首先 : ico要是32*32像素的 可以百度vb专用的图标 ...大多数人经过上面两步还是没改变桌面图标,可以看下面的方法: 在桌面上F5,或者把这个exe移动到别的目录后改个文件名再移回来就能显示新修改的图标了, 原因在于首先 :
ico要是32*32像素的
可以百度vb专用的图标
方法一:窗体form的Icon属性里添加一个图标
方法二:工程--工程属性-生成--图标 选择此窗体的图标就行了。
当然,必须选择支持的图标才行。
大多数人经过上面两步还是没改变桌面图标,可以看下面的方法:
在桌面上F5,或者把这个exe移动到别的目录后改个文件名再移回来就能显示新修改的图标了,
原因在于桌面文件夹的图标缓存没更新,我以前遇到过。
-
Android如何动态更换桌面图标(巨坑)
2018-10-23 16:09:091、Android如何动态更换桌面图标 1.1使用场景 APP,在中国电商行业中,某宝和某东是行业的标杆。其中有一点挺让人好奇的,那就是在双十一临近之时,他们的APP桌面图标突然变成了带有双十一字样的图标。可能就是... -
电脑如何更改桌面图标 更改桌面图标方法
2021-07-06 09:00:34电脑如何更改桌面图标,更改桌面图标方法随着电脑的不断改革,电脑的多样化、个性化也逐渐体现。用户在使用自身的电脑时,觉得原生的系统桌面图标不够新颖,不是自己喜欢的种类。那么桌面图标应该如何更改呢,下面就... -
win10桌面白图标修复脚本.bat
2021-07-07 20:15:18win10桌面白图标修复脚本.bat, 修复白图标 -
电脑如何修改桌面应用的图标
2021-06-16 08:42:06电脑如何修改桌面应用的图标使用电脑的用户,觉得桌面图标太丑了,因此想要修改桌面应用的图标为自己喜欢的图标,但是却不知道如何修改,那么小编就来为大家介绍一下吧。具体如下:1.第一步,小编就以修改微信图标为... -
c# 设置桌面图标_C#:设置图标
2020-07-09 06:33:25c# 设置桌面图标 VS2005中的C#(可能还有VB.NET)可能有点棘手。 这是我的一点缺点: 将图标文件添加到您的项目(无论新文件还是现有文件) 打开图标文件为VS并根据需要进行编辑。 (注意:左侧是图标的小... -
Android隐藏桌面图标
2015-05-05 11:27:25一个Android项目,实现了传入一个context来隐藏本应用图标。 -
Android更改桌面图标的方法
2019-07-01 15:55:19有时候我们会遇到这样的问题,我们的领导要求我们在节日的时候把APP中的各种...没关系,这篇文章可以让你很轻松的修改桌面图标。 首先我们需要在AndroidManifest.xml中修改如下代码 <activity android:name="... -
计算机桌面图标乱了,如何解决电脑桌面图标乱跑的问题
2021-06-23 04:40:03如何解决电脑桌面图标乱跑的问题很多使用电脑的人会发现,我们每次打开电脑后电脑的图标总是被打乱了,下面给大家讲讲解决电脑桌面图标乱跑的方法。具体如下:1.第一步,在电脑桌面空白处右击,选择如图所示的“查看... -
Delphi完成桌面图标优化、快速换背景、批处理等操作.rar
2019-07-10 18:31:38Delphi完成桌面图标优化、快速换背景、批处理等操作,一款用于网吧的桌面优化工具,可以进行桌面图标简化、快速的更换背景、注册表导入、执行批处理等操作,大家可以看截图,还可以完成很多功能的。 -
win10桌面图标变白,损坏一键修复。
2018-01-24 13:41:28桌面图标变白,损坏一键修复。适用于win10,批处理工具。 -
桌面图标删不掉怎么办 如何彻底删除桌面图标
2021-06-17 03:08:36大家有没有这样的经历:安装了一个游戏或者软件,然后发现有弹出窗口等恶意行为,当想删除其游戏或者软件的时候,对话框提示已经删除了软件,但快捷方式的图标还留在桌面上,但想删除桌面图标是,发现桌面上的图标也... -
win10桌面图标如何固定位置|win10电脑桌面图标固定位置方法
2021-06-23 08:49:54在本文中小编将教大家win10桌面图标如何固定位置。win10电脑桌面图标固定位置方法:1、在开始菜单单击鼠标右键,点击“运行”;2、在运行框中输入:regedit 按下回车键打开注册表编辑器;3、依次定位到:HKEY_... -
如何解决电脑桌面图标乱跑的问题
2021-06-23 04:42:04如何解决电脑桌面图标乱跑的问题很多使用电脑的人会发现,我们每次打开电脑后电脑的图标总是被打乱了,下面给大家讲讲解决电脑桌面图标乱跑的方法。具体如下:1.第一步,在电脑桌面空白处右击,选择如图所示的“查看... -
xp如何显示桌面图标?windows xp系统桌面图标消失的解决方法
2021-06-17 09:18:46windows xp系统在日常使用电脑的过程中,总会遇到各种各样的故障问题,有些问题困扰着广大用户,比如xp系统电脑桌面快速启动栏的显示桌面图标消失不见了的问题,那么遇到这种情况我们应该怎么办呢?下面小编就带大家... -
电脑显示器桌面图标不见了怎么办
2021-06-22 20:45:41在有些时候不知道是怎么回事,我们的电脑显示器桌面图标不见了,这该怎么办呢?下面就由学习啦小编来为你们简单的介绍电脑显示器桌面图标不见的解决方法吧!希望你们喜欢!电脑显示器桌面图标不见的解决方法:其次:进入... -
桌面图标贪吃蛇游戏
2011-12-31 15:37:31最近做了个贪吃蛇游戏,后来想用桌面上的图标在做个贪吃蛇游戏,按着这个想法查了下MSDN,同时把它集成在了上一个Desktop Snow的小软件之中。如果大家在试玩中,出现任何bug,可以在评论中提出来,以便后续完善! -
桌面图标出现虚线框,win10桌面图标带有虚线方框
2021-06-28 09:58:09有时候不知道怎么回事桌面图标出现了虚线框特别不好看,那么怎么去掉虚线框呢?下面是解决方案:1:在开始菜单或者桌面上右击计算机,打开属性,或者在控制面板中打开系统,然后在左侧打开高级系统设置功能,在高级... -
电脑桌面图标不能随意拖动,怎么随意拖动桌面图标
2021-06-25 11:18:33win10系统桌面图标文件无法拖动排列时一个系统性的问题,照成这个问题的原因时多样性的,下面就为大家详细介绍Win10系统桌面文件图标无法拖动排列的原因及解决方法。方法一:1、首先在桌面上右击查看是不是设置了... -
win10桌面图标黑块怎么修复_w10电脑桌面图标变黑如何处理
2021-06-25 10:17:29在win10系统使用过程中,难免会遇到一些比较难解决的小问题,其中就包括桌面图标异常,近日有用户的win10系统开机之后桌面图标却出现了黑色方块的情况,那么win10桌面图标有黑块怎么修复呢?下面小编就来教大家win10... -
win7电脑桌面图标排列方式如何设置,电脑桌面图标排列方式设置方法
2021-06-17 06:16:59最近有位win7系统用户反映,自己桌面上的程序图标非常多,看着很乱,所以想要将它们排列整齐一些,但是却不知道怎么操作,那么win7电脑桌面图标排列方式怎么设置呢?今天为大家分享win7电脑桌面图标排列方式设置方法... -
win10系统桌面图标太大如何缩小?桌面图标缩小的方法
2021-07-05 08:47:19电脑重装win10正式版系统后,发现桌面图标很大导致没放几个图标就挤满了桌面,而且还不美观,如果没有特别深度近视,一般桌面图标大小就可以了。想要设置桌面图标,但无奈电脑小白不知如何操作?其实桌面图标大小... -
桌面图标不见了怎么办,教您电脑桌面图标不见了怎么办
2021-06-24 04:29:06不知道大家在使用电脑的时候,有没有遇到过桌面图标都消失不见的情况,只剩下底部的任务栏。那么遇到这种情况该怎么办呢?下面,小编给大家介绍电脑桌面图标不见了的处理技巧。很多人在使用电脑的时候会发现,电脑... -
Android隐藏应用桌面图标/动态修改桌面图标
2021-11-05 17:11:24Android隐藏应用桌面图标/动态修改桌面图标 应用启动后点击隐藏 private void hide() { PackageManager packageManager = getPackageManager(); packageManager.setComponentEnabledSetting(getComponentName(), ...