Android 动态修改app图标
2018-02-06 15:35
459 查看
一款商业级的app,动态修改app图标,这是很常用的功能了,特别是电商类的,双11一个图标,双12一个图标。我们不可能为了修改一个图标而特意去发布一个新版本。
解决方案:
1、在manifest的设置多个activity-alias。只显示其中一个,其他的隐藏。
applicatian中自带一个入口图标和名称,默认是启用的,所以只需要增加要修改的图标就行了,并设置android:enabled=”false” 暂不启用。
当特定时间到了,需要修改图标时:
主要核心的就是:
参考:
https://www.jianshu.com/p/eecfd9e0b878
解决方案:
1、在manifest的设置多个activity-alias。只显示其中一个,其他的隐藏。
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity-alias android:name=".tag_11" android:label="双11" android:icon="@mipmap/ic_icon_11" android:enabled="false" android:targetActivity=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity-alias> <activity-alias android:name=".tag_12" android:label="双12" android:icon="@mipmap/ic_icon_12" android:enabled="false" android:targetActivity=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity-alias> </application>
applicatian中自带一个入口图标和名称,默认是启用的,所以只需要增加要修改的图标就行了,并设置android:enabled=”false” 暂不启用。
当特定时间到了,需要修改图标时:
public class MainActivity extends AppCompatActivity { private PackageManager mPackageManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mPackageManager=getApplicationContext().getPackageManager(); updateIcon(); } //检查图标并更换 public void updateIcon(){ //获取当前的ComponentName ComponentName currentName=getComponentName(); if (isDouble11()&&!currentName.getClassName().equals("com.hellokiki.myapplication.tag_11")){ ComponentName double11=new ComponentName(getBaseContext(),"com.hellokiki.myapplication.tag_11"); disableComponent(currentName); enableComponent(double11); Log.e("2018","双11"); }else if(isDouble12()&&!currentName.getClassName().equals("com.hellokiki.myapplication.tag_12")){ ComponentName double12=new ComponentName(getBaseContext(),"com.hellokiki.myapplication.tag_12"); disableComponent(currentName); enableComponent(double12); Log.e("2018","双12"); } } //是否双11期间 public boolean isDouble11(){ Calendar calendar=Calendar.getInstance(); calendar.set(2018,11-1,1); long startTime=calendar.getTime().getTime(); calendar.set(2018,11-1,11); long endTime=calendar.getTime().getTime(); long nowTime=System.currentTimeMillis(); if(startTime<nowTime&&nowTime<endTime){ return true; } return false; } //是否双12期间 public boolean isDouble12(){ Calendar calendar=Calendar.getInstance(); calendar.set(2018,12-1,1); long startTime=calendar.getTime().getTime(); calendar.set(2018,12-1,12); long endTime=calendar.getTime().getTime(); long nowTime=System.currentTimeMillis(); if(startTime<nowTime&&nowTime<endTime){ return true; } return false; } //启用组件 public void enableComponent(ComponentName componentName){ mPackageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP); } //隐藏组件 public void disableComponent(ComponentName componentName){ mPackageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP); } }
主要核心的就是:
mPackageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP); //第二个参数,PackageManager.COMPONENT_ENABLED_STATE_DISABLED为隐藏, //PackageManager.COMPONENT_ENABLED_STATE_ENABLED为启用
参考:
https://www.jianshu.com/p/eecfd9e0b878
相关文章推荐
- Android动态修改APP图标
- android动态修改app桌面icon
- 修改Xamarin Android App 的图标跟名称
- Android 利用 <activity-alias> 动态改变 App 桌面图标
- Android学习探索之App多渠道打包及动态添加修改资源属性
- Android 动态改变app图标
- Android实现动态改变app图标的示例代码
- android app图标总是显示默认的机器人图标,且在manifest文件的application中修改无效
- 【Android】Android之修改app标题与图标
- java代码动态修改app图标
- Android TabHost 动态修改图标或者动态改变标题
- Android 利用 <activity-alias> 动态改变 App 桌面图标
- Android中TabHost动态修改图标或者动态改变标题
- 修改Android app图标(Android Studio)
- Android动态来改变App桌面图标
- Android利用activity-alias动态修改应用图标和名称
- android studio 修改App图标方法
- Android 轻松打造一个APP动态切换桌面图标Launcher
- Android如何动态改变App桌面图标
- Android动态修改icon--让你的app浪起来