记录项目当中遇到的问题--第二部

一、scrollview嵌套viewpager空白页面

二、 动态切换APP图标(本地提前设置)

 使用场景为APP内用户手动选择图标,如节日、特殊活动图标(要实现这个功能主要涉及到两个点:清单文件配置 activity-alias 和PackageManager下的API setComponentEnabledSetting

  1. 清单文件配置如下,一个activity-alias代表一个可替换图标(这里需要注意,launcherA和launcherB的android:enable属性要配置为false,要不然应用安装界面会有三个图标了)

            <activity
                android:name=".MainActivity"
                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="launcherA"
                android:enabled="false"
                android:exported="true"
                android:icon="@mipmap/ic_launcher_a"
                android:label="A图标应用"
                android:roundIcon="@mipmap/ic_launcher_a_round"
                android:targetActivity=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity-alias>
    
            <activity-alias
                android:name="launcherB"
                android:enabled="false"
                android:exported="true"
                android:icon="@mipmap/ic_launcher_b"
                android:label="B图标应用"
                android:roundIcon="@mipmap/ic_launcher_b_round"
                android:targetActivity=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity-alias>
        </application>

  2. 通过setComponentEnabledSetting设置相应的图标,该API对应的3个参数解析
  • componentName–要启用的组件
  • newState–组件的新启用状态。
  • flags–可选的行为标志
int newState = PackageManager.COMPONENT_ENABLED_STATE_DISABLED;//纯更换图标,不额外生成另一个APP
int flags = PackageManager.DONT_KILL_APP;//不杀死包含该组件的应用程序
MiChatApplication.getContext()
                 .getPackageManager()
                 .setComponentEnabledSetting(new ComponentName("包名", "启动类全路径"), newState, flags);

 通过以上关键2点即可动态更换应用图标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值