@@ -59,6 +59,7 @@ public class SettingsActivity extends Activity {
5959 private static final String RECOMMEND_PLUGIN = "settings_plugin_recommend" ;
6060 private static final String DISABLE_RESIDENT_NOTIFICATION = "advance_settings_disable_resident_notification" ;
6161 private static final String ALLOW_FAKE_SIGNATURE = "advance_settings_allow_fake_signature" ;
62+ private static final String DISABLE_XPOSED = "advance_settings_disable_xposed" ;
6263
6364 @ Override
6465 protected void onCreate (Bundle savedInstanceState ) {
@@ -102,6 +103,7 @@ public void onCreate(Bundle savedInstanceState) {
102103 SwitchPreference yieldMode = (SwitchPreference ) findPreference (YIELD_MODE );
103104 SwitchPreference disableResidentNotification = (SwitchPreference ) findPreference (DISABLE_RESIDENT_NOTIFICATION );
104105 SwitchPreference allowFakeSignature = (SwitchPreference ) findPreference (ALLOW_FAKE_SIGNATURE );
106+ SwitchPreference disableXposed = (SwitchPreference ) findPreference (DISABLE_XPOSED );
105107
106108 addApp .setOnPreferenceClickListener (preference -> {
107109 ListAppActivity .gotoListApp (getActivity ());
@@ -343,6 +345,28 @@ public void onCreate(Bundle savedInstanceState) {
343345 }
344346 });
345347
348+ disableXposed .setOnPreferenceChangeListener ((preference , newValue ) -> {
349+
350+ if (!(newValue instanceof Boolean )) {
351+ return false ;
352+ }
353+
354+ boolean on = (boolean ) newValue ;
355+
356+ File disableXposedFile = getActivity ().getFileStreamPath (".disable_xposed" ); // 文件不存在代表是保守模式
357+ if (on ) {
358+ boolean success ;
359+ try {
360+ success = disableXposedFile .createNewFile ();
361+ } catch (IOException e ) {
362+ success = false ;
363+ }
364+ return success ;
365+ } else {
366+ return !disableXposedFile .exists () || disableXposedFile .delete ();
367+ }
368+ });
369+
346370 disableResidentNotification .setOnPreferenceChangeListener (((preference , newValue ) -> {
347371
348372 if (!(newValue instanceof Boolean )) {
0 commit comments