Android Setting 问题

1,应用disable 流程

根据项目需求,最近研究了下app 被禁用的流程

每一个button 对应ActionButtonsPreference

frameworks/base/packages/SettingsLib/ActionButtonsPreference/src/com/android/settingslib/widget/ActionButtonsPreference.java

这里面有api 可以控制图标,可见,和是否可以点击

packages/apps/Settings/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java

控制 按钮的实现功能,打开,卸载,停止等

其中handleDisableable  根据系统白名单判断应用是否可以停止

@VisibleForTesting
    boolean handleDisableable() {
        boolean disableable = false;
        // Try to prevent the user from bricking their phone
        // by not allowing disabling of apps signed with the
        // system cert and any launcher app in the system.
        if (mHomePackages.contains(mAppEntry.info.packageName)
                || isSystemPackage(mActivity.getResources(), mPm, mPackageInfo)) {
            // Disable button for core system applications.
            mButtonsPref.setButton2Text(R.string.disable_text)
                    .setButton2Icon(R.drawable.ic_settings_disable);
        } else if (mAppEntry.info.enabled && !isDisabledUntilUsed()) {
            mButtonsPref.setButton2Text(R.string.disable_text)
                    .setButton2Icon(R.drawable.ic_settings_disable);
            //读取系统enable 的package list        
            disableable = !mApplicationFeatureProvider.getKeepEnabledPackages()
                    .contains(mAppEntry.info.packageName);
        } else {
            mButtonsPref.setButton2Text(R.string.enable_text)
                    .setButton2Icon(R.drawable.ic_settings_enable);
            disableable = true;
        }

        return disableable;
    }

读取列表的地方在

packages/apps/Settings/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java

如果我们需要默认就不能diable 只需要在getKeepEnabledPackages 方法最后加上对应包名即可

keepEnabledPackages.add("xxx.xx.xxx");

2,未完待续

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值