美文网首页
Android 动态切换应用icon图和应用名称

Android 动态切换应用icon图和应用名称

作者: 清朝公主大清正黄旗 | 来源:发表于2022-03-30 10:46 被阅读0次

布局代码:


image.png

这里直接通过点击按钮,进行切换

        binding.tvAppDefault.setOnClickListener {
            packageManager.setComponentEnabledSetting(ComponentName(this,"$packageName.DefaultAlias"),PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP)

            packageManager.setComponentEnabledSetting(ComponentName(this,"$packageName.CalculatorActivity"),PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP)
            ToastUtils.showToast("已切换,10秒后生效")
           
        }
        binding.vTuTuPet.setOnClickListener {
            packageManager.setComponentEnabledSetting(ComponentName(this,"$packageName.DefaultAlias"),PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP)

            packageManager.setComponentEnabledSetting(ComponentName(this,"$packageName.CalculatorActivity"),PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP)
            ToastUtils.showToast("已切换,10秒后生效")
           
        }

下面是Manifest 配置:

    <application
        android:name=".base.BaseApp"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppIconGone_01">
<activity
            android:name=".ui.activity.SplashActivity"
            android:enabled="false"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!-- 默认的图标 -->
        <activity-alias
            android:name="DefaultAlias"
            android:targetActivity=".ui.activity.SplashActivity"
            android:enabled="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>
        <!-- 别名图标和名称1 -->
        <activity-alias
            android:name="CalculatorActivity"
            android:targetActivity=".ui.activity.SplashActivity"
            android:enabled="false"
            android:label="calculator"
            android:icon="@mipmap/ic_launcher_cat">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity-alias>
    </application>

注意的是,不管哪个icon和名称,在配置时,targetActivity 指向的都是默认的启动的第一个activity

这里注意看这个: android:enabled="false" 我只给默认的那个设置为true 其他的都是false 是为了防止桌面上有多个应用图标,如果都是true 就会出现多个应用图标,实际应用肯定不能这么玩,所以就只能是设置系统默认的那个为true 显示默认的图标和名称了。

这里不展示效果图了,直接尝试就行,

相关文章

网友评论

      本文标题:Android 动态切换应用icon图和应用名称

      本文链接:https://www.haomeiwen.com/subject/rmmijrtx.html