当前位置:   article > 正文

Android实现APP安装后动态更换Icon和名称(即一个App多种入口)_android开发 如何动态更换应用程序的入口

android开发 如何动态更换应用程序的入口

最近看到手机自带的时钟App可以实时的修改图标样式,就觉得很神奇。考虑到我自己要做的日记App可能也需要这样的功能,于是研究了一下,目前初步实现了修改图标及点击后进入不同Activity的功能,代码比较简单,点击这里download ZIP

简单效果图:

原来   调用修改方法:


代码很简单,就2个部分:

1.修改manifest文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="sxkeji.net.aliasdemo" >
  4. <application
  5. android:allowBackup="true"
  6. android:icon="@mipmap/ic_launcher"
  7. android:label="@string/app_name"
  8. android:theme="@style/AppTheme" >
  9. <activity
  10. android:name=".MainActivity"
  11. android:label="@string/app_name"
  12. android:exported="true">
  13. <intent-filter>
  14. <action android:name="android.intent.action.MAIN" />
  15. <category android:name="android.intent.category.LAUNCHER" />
  16. </intent-filter>
  17. </activity>
  18. <activity-alias
  19. android:enabled="true"
  20. android:label="应用名称"
  21. android:name=".MainActivity"
  22. android:targetActivity=".MainActivity">
  23. <intent-filter>
  24. <action android:name="android.intent.action.MAIN"/>
  25. </intent-filter>
  26. </activity-alias>
  27. <activity
  28. android:name=".TestAlias"
  29. android:label="入口2"
  30. android:exported="true" >
  31. </activity>
  32. <activity-alias
  33. android:enabled="false"
  34. android:icon="@mipmap/git"
  35. android:label="@string/app_name"
  36. android:name=".TestAlias"
  37. android:targetActivity=".TestAlias">
  38. <intent-filter>
  39. <action android:name="android.intent.action.MAIN"/>
  40. <category android:name="android.intent.category.LAUNCHER"/>
  41. </intent-filter>
  42. </activity-alias>
  43. </application>
  44. </manifest>


上面代码的意思是建立2个别名,可以看做2个引用,通过别名 可以找到对应的Activity。


这里注意2个activity-alias的name、targetActivity对应的Activity名称要写自己要对应的。 具体activity-alias是什么后面介绍,可以先看看这篇博客:

一个app,多个入口图标,activity-alias实现多程序入口并显示指定view完成


2.Java代码修改:

  1. private void changeIcon() {
  2. PackageManager pm = getApplicationContext().getPackageManager();
  3. System.out.println(getComponentName());
  4. //去除旧图标,不去除的话会出现2个App图标
  5. pm.setComponentEnabledSetting(getComponentName(),
  6. PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
  7. PackageManager.DONT_KILL_APP);
  8. //显示新图标
  9. pm.setComponentEnabledSetting(new ComponentName(
  10. getBaseContext(),
  11. "sxkeji.net.aliasdemo.TestAlias"),
  12. PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
  13. PackageManager.DONT_KILL_APP);
  14. }

在需要修改Icon的时候调用上面的方法,就可以实现更换效果了。


适用场景:

比如电子商务类App推出新活动时可以通过服务器发送消息,在service里修改图标,吸引用户进入;

还有一些小清新App可以支持用户自定义App图标、名称,更人性化;

等等。。。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/865790?site
推荐阅读
相关标签
  

闽ICP备14008679号