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("");
}
强制要求用户设置锁屏密码,并在开机向导配置&spm=1001.2101.3001.5002&articleId=148219705&d=1&t=3&u=88a76985f80747fcab3818e31440b81c)
1051

被折叠的 条评论
为什么被折叠?



