流行Androidandroid经验积累

android动态修改应用图标和应用名称

2017-01-03  本文已影响0人  艾伦oy

今年双11前夕发现我手机上的淘宝APP的图标和应用名称都变了,变成了带有双11字样的,但是我并没有更新APP图标是怎么变的?这让我很好奇!于是就有了下文。

实现

AndroidManifest.xml文件的application节点中添加如下代码:

    <activity-alias
        android:name=".activity.Bazaar"  //替换之前Activity的名称
      android:enabled="false" 
       android:icon="@mipmap/ic_launcher"
        android:label="应用名称"        
      android:targetActivity=".activity.SplashActivity">    //填写应用程序入口Activity
    <intent-filter>       
     <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" />  
      </intent-filter>
    </activity-alias>

<action android:name="android.intent.action.MAIN" />决定应用程序最先启动的Activity 。
<category android:name="android.intent.category.LAUNCHER" />决定应用程序是否显示在程序列表里。

在程序第一个执行的activity中添加:

PackageManager mP;
ComponentName def;
ComponentName mBazaar;

mP = getApplicationContext().getPackageManager();
def = new ComponentName(getBaseContext(),"com.fangbei.umarket.activity.SplashActivity");
mBazaar=new ComponentName(getBaseContext(),"com.fangbei.umarket.activity.Bazaar");

private void enabledComponent(ComponentName name) {    
mP.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}
private void disableComponent(ComponentName name) {    
mP.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}

COMPONENT_ENABLED_STATE_DISABLED通过查看源代码注释给的解释是禁用程序列表中的某个应用图标
COMPONENT_ENABLED_STATE_ENABLED则相反

执行此方法改变图标
private void setIconSc() { 
   disableComponent(def); //禁用之前的图标
   enabledComponent(mBazaar);}

private void setIconWm() {    
 disableComponent(mBazaar); 
   enabledComponent(def);}//显示快捷图标

假如双十一快到了就可以添加一个网络请求,调用上面例子setIconWm()方法的判断是否需要修改应用图标和名称!
创建一个APP的快捷方式,快捷方式必须指向程序入口的Activity,此时这个APP就在桌面有两个快捷方式,然后在Activity里面通过PackageManager 类把之前的快捷方式禁用隐藏起来,

上一篇下一篇

猜你喜欢

热点阅读