动态更换app图标和app名称

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

后续:待研究

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。