Android开机向导定制(3)强制要求用户设置锁屏密码,并在开机向导配置

1、打开/vendor/sprd/platform/packages/apps/SetupWizard/src/org/lineageos/setupwizard/ScreenLockActivity.java,找到getLayoutResId方法。

   @Override
    protected int getLayoutResId() {
        //add code
        String custom= SystemProperties.get("persist.sys.custom","").trim();
        if(custom.length()!=0) {
            switch (custromname) {
                case "XXX":               
                    return R.layout.setup_lockscreen_custom;
                default:
                    return R.layout.setup_lockscreen;
            }
        }else
                return R.layout.setup_lockscreen;
        //add end
        //return R.layout.setup_lockscreen; rem 
    }

注释掉原始代码return R.layout.setup_lockscreen;,并增加相应代码,根据客制化属性,决定是否

在开机向导中禁止跳过设置密码,原始laytout:

<com.google.android.setupdesign.GlifLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/setup_wizard_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        style="@style/SudContentFrame">
.............................................
        <org.lineageos.setupwizard.NavigationLayout
            android:id="@+id/navigation_bar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:showSkipButton="true" />
    </LinearLayout>
</com.google.android.setupdesign.GlifLayout>

新的laytout文件将app:showSkipButton设置为false。

在点击ScreenLockActivity的“下一步”时候,向系统申请锁屏。

    public static final String ACTION_SETUP_LOCKSCREEN = "com.android.settings.SETUP_LOCK_SCREEN";
    ............................................
    @Override
    protected void onNextPressed() {
        launchLockscreenSetup();
    }
    private void launchLockscreenSetup() {
        Intent intent = new Intent(ACTION_SETUP_LOCKSCREEN);
        intent.putExtra(EXTRA_TITLE,
                getString(R.string.settings_lockscreen_setup_title));
        intent.putExtra(EXTRA_DETAILS,
                getString(R.string.settings_lockscreen_setup_details));
        startSubactivity(intent, REQUEST_CODE_SETUP_LOCKSCREEN);
    }

com.android.settings.SETUP_LOCK_SCREEN对应/packages/apps/Settings/AndroidManifest.xml

.................
   <activity android:name=".password.SetupChooseLockGeneric"
            android:theme="@style/GlifTheme.Light"
            android:exported="true"
            android:label="@string/lock_settings_picker_title">
            <intent-filter android:priority="1">
                <action android:name="com.android.settings.SETUP_LOCK_SCREEN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
.................

2、打开/packages/apps/Settings/src/com/android/settings/password/SetupChooseLockGeneric.java,

并找到addPreferences方法。

@Override
        protected void addPreferences() {
            if (isForBiometric()) {
                super.addPreferences();
            } else {
                addPreferencesFromResource(R.xml.setup_security_settings_picker);
                //add code
                String custom= SystemProperties.get("persist.sys.custom","").trim();
                if(custom.length()!=0){      
                    switch (custom){
                        case "XXX":
                            findPreference(KEY_UNLOCK_SET_DO_LATER).setVisible(false);
                            break;
                        default:
                            break;
                    }
                }
               //add end
            }
        }

根据客制化属性,决定是否在开机向导中跳过设置密码。

setup_security_settings_picker布局文件:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
        android:key="lock_settings_picker">
.......................................................
    <com.android.settingslib.RestrictedPreference
            android:key="unlock_set_do_later"
            android:title="@string/unlock_set_do_later_title"
            android:persistent="false"/>

</PreferenceScreen>

3、打开/packages/apps/Settings/src/com/android/settings/password/SetupChooseLockPattern.java

找到updateStage方法,注释掉原有代码,并增加相关判断。

 @Override
        protected void updateStage(Stage stage) {
            super.updateStage(stage);
            if (!getResources().getBoolean(R.bool.config_lock_pattern_minimal_ui)
                    && mOptionsButton != null) {
                mOptionsButton.setVisibility(
                        (stage == Stage.Introduction || stage == Stage.HelpScreen ||
                                stage == Stage.ChoiceTooShort || stage == Stage.FirstChoiceValid)
                                ? View.VISIBLE : View.INVISIBLE);
            }
            if (stage.leftMode == LeftButtonMode.Gone && stage == Stage.Introduction) {
                /* rem code 
                mSkipOrClearButton.setVisibility(View.VISIBLE);
                mSkipOrClearButton.setText(getActivity(), R.string.skip_label);
                mLeftButtonIsSkip = true;
                */
                //add code
                String custom= SystemProperties.get("persist.sys.custom","").trim();             
                if(custom.length()!=0) {
                    switch (custromname) {
                        case "XXX":                                       
                            mLeftButtonIsSkip = false;
                            break;
                        default:
                            mSkipOrClearButton.setVisibility(View.VISIBLE);
                            mSkipOrClearButton.setText(getActivity(), R.string.skip_label);
                            mLeftButtonIsSkip = true;
                            break;

                    }
                }else{
                    mSkipOrClearButton.setVisibility(View.VISIBLE);
                    mSkipOrClearButton.setText(getActivity(), R.string.skip_label);
                    mLeftButtonIsSkip = true;
                }
                //add end
            } else {
                mLeftButtonIsSkip = false;
            }
            final GlifLayout layout = getActivity().findViewById(R.id.setup_wizard_layout);
            layout.setDescriptionText("");
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值