动态更换app图标和app名称
2023-01-31 本文已影响0人
咚咚蹡蹡
在AndroidManifest中配置默认的activity-alias,在配置需要更换的activity-alias
<application
......
<!-- 默认图标和名称-->
<activity-alias
android:name="com.default"
android:targetActivity=".view.activity.launch.LauncherActivity"
android:label="@string/app_name"
android:enabled="false"
android:icon="@mipmap/ic_launcher"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<!-- 要更换的图标和名称-->
<activity-alias
android:name="com.change"
android:targetActivity=".view.activity.launch.LauncherActivity"
android:label="@string/change_name"
android:enabled="false"
android:icon="@drawable/ic_give_red_like"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
......
</application>
name随意,但是必须得 a.a 这样的模式
targetActivity启动页
label,要更换的app名称
icon要更换的icon
private fun changeIcon(name:String){
val pm = packageManager
pm.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP)
pm.setComponentEnabledSetting(ComponentName(this, name), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP)
}
changeIcon("com.change")方法中name必须得和AndroidManifest中要更换的图标和名称activity-alias中的name一致
缺点:无法重启,并且这种操作必然有部分机型异常
后续:待研究