动态修改安卓桌面icon

继承启动activity

网上很多说使用activity-alias的,后面看到知乎一个文章:Android动态变更图标和应用名,觉得也是写成一个activity合理一些。

这里直接继承原来的启动activity,内容为空就行:

public class NewMainActivity1 extends MainActivity {}

在manifest内注册

这里就不用动原来的activity了,自己新写注册文件:

        <activityandroid:name=".NewMainActivity1"android:enabled="false"android:exported="true"android:icon="@drawable/icon"android:label="test1"android:targetActivity=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

以singleInstance模式新建设置activity

这里以SettingActivity为例,用一个对话框来选择图标,稍有不同的是,我这设置完会回到启动的activity,如果是使用别名应该做不到。

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_setting);new AlertDialog.Builder(this).setTitle("设置图标activity").setMessage("切换不同入口activity,在桌面显示不同得icon").setNegativeButton("取消", (dialog, which) -> testMutiIcon(-1)).setNeutralButton("恢复", (dialog, which) -> testMutiIcon(0)).setPositiveButton("切换到新icon", (dialog, which) -> testMutiIcon(1)).create().show();}private void testMutiIcon(int type) {PackageManager pm = getPackageManager();ComponentName mainComp = new ComponentName(this, "com.xxx.MainActivity");ComponentName new1Comp = new ComponentName(this, "com.xxx.NewMainActivity1");Intent intent;if(type == 0) {pm.setComponentEnabledSetting(mainComp, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);pm.setComponentEnabledSetting(new1Comp, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);intent = new Intent(this, MainActivity.class);}else if(type == 1)  {pm.setComponentEnabledSetting(mainComp, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);pm.setComponentEnabledSetting(new1Comp, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);intent = new Intent(this, NewMainActivity1.class);}else {if (PackageManager.COMPONENT_ENABLED_STATE_DISABLED == pm.getComponentEnabledSetting(mainComp)) {intent = new Intent(this, NewMainActivity1.class);}else {intent = new Intent(this, MainActivity.class);}}startActivity(intent);finish();}

这里intent这么写是因为前面activity的帐已经被销毁了,可以通过系统的任务栏查看,所以我们要重新跳转到主界面,这里MainActivity和NewMainActivity1内容是一样的,但是实际已经是两个类了。

跳转到设置

跳转和原文章写的差不多,多了个版本限制:

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {Intent intent = new Intent(this, SettingActivity.class);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);startActivity(intent);}

最后

因为是上班空闲时间写的,写的不是很好。

动态修改安卓桌面icon相关推荐

  1. Android-动态修改APP桌面图标

    背景 最近公司有个动态修改APP桌面图标的需求,需要做一下技术调研,网上查了一下实现方案,然后参考网上的方案写了个实现demo,在这里记录一下. 题外话:由于图标切换都是本地配置的,产品问了一句:&q ...

  2. Android动态修改icon

    Android动态修改icon 南京证券项目最近的需求之一,在某一时间时应用图标icon显示4.0icon,春节时显示春节icon,当春节过后,app需还原为默认icon,也就是有三个icon需要变化 ...

  3. Android动态修改桌面图标新坑总结

    一.优秀文章概述 下面的文章描述动态修改桌面图标的基本方法,并且总结了很多坑及解决方案,以下是在此文章基础上的补充 <Android动态修改应用图标和名称> 二.第一个新坑 Android ...

  4. 动态修改网页icon图标

    动态修改网页icon图标 //如果在vue项目中 在App.vue下的 created() 中输入 var link = document.querySelector("link[rel*= ...

  5. Launcher3桌面Icon的文字size的 修改

    Hotseat上面的快捷方式可以分为两种,一种是普通快捷方式,可以default_workspace里面配置.另外一个是全部应用列表的按钮,这个实在Hotseat.java里面动态生成的. 第一种.是 ...

  6. 安卓动态修改系统状态栏背景和文字颜色,以及动态显示或隐藏系统状态栏

    关于动态修改系统状态栏背景.字体和图标颜色,以及动态显示或隐藏系统状态栏,一直都是都是许多项目的常规需求.但是,由于不同版本间的兼容性差异,网上的实现方法多种多样.并且,许多方法都会存在这样.那样的不 ...

  7. 安卓桌面壁纸_火莹视频桌面:好玩的动态桌面壁纸软件,让你的桌面动起来

    前言 每天都看着静止的桌面壁纸会不会感到有些无聊呢? 今天分享一款动态桌面壁纸软件,带你打开新世界的大门--「火莹视频桌面」,让我们的桌面动起来!φ(゜▽゜*)♪ 火莹视频桌面 火莹视频桌面是一款桌面 ...

  8. electron-vue跨平台桌面应用开发实战教程(三)——动态修改窗口大小

    前边两篇文字简单介绍了一下怎么搭建electron-vue项目,主进程的基本配置,主进程和渲染进程之间的通讯.本文我们主要来讲解下如何动态的修改窗口大小. 通常很多桌面应用,初次打开都需要登录,登录窗 ...

  9. iOS动态修改app 图标(icon)

    作者:流火绯瞳 链接:https://www.jianshu.com/p/69313970d0e7 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处. Demo地址 ht ...

最新文章

  1. oracle goldengate技术架构-简单试验(全)
  2. postman 并发测试
  3. Spring测试框架springContextTest
  4. udp与tcp协议介绍
  5. 李嘉诚今日正式退休,来看看他一生都做过哪些牛逼的事
  6. 一套完整的导视设计案例_色彩导视艺术:乌克兰基辅语言学校导视设计案例
  7. lcd屏幕抖动_电视屏幕面板大科普!买电视之前必看!
  8. python中import星_【已解决】Python中递归import导入:ImportError: cannot import name
  9. Python爬虫_数据存储
  10. zabbix 2.4.5 自定义key监控redis
  11. HDU 2037 贪心
  12. 3S基础知识:用MapX快速开发
  13. wps如何设置试卷密封线_WPS怎么制作考试试卷?
  14. 2016国内移动广告平台排行榜
  15. 诗词取名:出自古诗词中富有文采的女孩名字
  16. 计算机无线网卡连接网络,台式机怎么连接无线网络?台式电脑不用网卡怎么连接网络?...
  17. 教你如何赚取你的第一桶金 - 2048(含源码)
  18. auto.js悬浮窗按钮的实际使用
  19. 经济-一文看懂经济学进化史:经济学的四次革命
  20. 输入一个日期判断是当年的第几天(C语言)

热门文章

  1. 3D图形学(10):游戏中的加速渲染算法
  2. python逻辑题_Python逻辑思维3题解答
  3. 卷积神经网络用于MRI图像中的脑部病变分割
  4. 集成 RealTek 声卡 在 Windows 7 有杂音、爆音的解决方法
  5. 汽车电子电气架构里的VCU DCU ZCU ECU怎么区分?
  6. 二.ffmpeg 编译和配置
  7. 区块链底层平台FISCO BCOS的证书机制
  8. Windows msc文件
  9. word 2021 空格处下划线不显示
  10. GitHub release文件下载失败问题