Android实现动态改变app图标的示例代码

 更新时间:2017年09月01日 10:41:31   作者:L展菲Q  
本篇文章主要介绍了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" />

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android完全退出应用程序的方法

    Android完全退出应用程序的方法

    这篇文章主要介绍了Android完全退出应用程序的方法,实例分析了Android退出应用程序的相关方法与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • Android RecyclerView自由拖动item的实现代码

    Android RecyclerView自由拖动item的实现代码

    这篇文章主要介绍了Android RecyclerView自由拖动item的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • Android四大组件之BroadcastReceiver详解

    Android四大组件之BroadcastReceiver详解

    今天小编就为大家分享一篇关于Android四大组件之BroadcastReceiver详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Android UI开发中所遇到的各种坑

    Android UI开发中所遇到的各种坑

    今天小编就为大家分享一篇关于Android UI开发中所遇到的各种坑,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • android 仿微信demo——登录功能实现(移动端)

    android 仿微信demo——登录功能实现(移动端)

    本篇文章主要介绍了微信小程序-阅读小程序实例(demo),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能给你们提供帮助
    2021-06-06
  • 详解android在mob平台实现qq登陆和分享

    详解android在mob平台实现qq登陆和分享

    这篇文章主要介绍了详解android在mob平台实现qq登陆和分享,对接入第三方平台SDK感兴趣的同学们,可以参考下
    2021-04-04
  • android 控件同时监听单击和双击实例

    android 控件同时监听单击和双击实例

    这篇文章主要介绍了android 控件同时监听单击和双击实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • android中Glide实现加载图片保存至本地并加载回调监听

    android中Glide实现加载图片保存至本地并加载回调监听

    本篇文章主要介绍了android中Glide实现加载图片保存至本地并加载回调监听,具有一定的参考价值,有兴趣的可以了解一下
    2017-09-09
  • android内存优化之图片优化

    android内存优化之图片优化

    对图片本身进行操作。尽量不要使用setImageBitmap、setImageResource、BitmapFactory.decodeResource来设置一张大图,因为这些方法在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存
    2012-12-12
  • ViewPager2滑动冲突的解决方法

    ViewPager2滑动冲突的解决方法

    这篇文章主要为大家详细介绍了ViewPager2滑动冲突的解决方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04

最新评论