动态更换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一致
缺点:无法重启,并且这种操作必然有部分机型异常

后续:待研究

上一篇 下一篇

猜你喜欢

热点阅读