mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
19.1: add a modified patch from GrapheneOS to disable connectivity checks
This removes their option for their servers Signed-off-by: Tad <tad@spotco.us>
This commit is contained in:
parent
fe95f700d8
commit
75abc8b9ec
@ -63,6 +63,9 @@ nojit
|
||||
9 https://github.com/GrapheneOS/platform_build/commit/5b9927197e63593b9220d1a9280021252ef205e9
|
||||
9 https://github.com/GrapheneOS/platform_build/commit/e36c7aefaa78a1ed5b94c7f51d29277008eea232
|
||||
|
||||
[implemented] captive portal toggle
|
||||
12 https://github.com/GrapheneOS/platform_packages_apps_Settings/commit/2a0b0b9193195c360260a3ef7094e45c44b79a24
|
||||
|
||||
[implemented] show crash details
|
||||
12 https://github.com/GrapheneOS/platform_frameworks_base/commit/e740f4b78344c5671d022dfe90bed9e2dacd3db6
|
||||
|
||||
|
@ -1,55 +0,0 @@
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.SubSettings}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.preference.Preference.setOnPreferenceChangeListener(androidx.preference.Preference$OnPreferenceChangeListener)' on a null object reference
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3707)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3864)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2253)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:201)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.os.Looper.loop(Looper.java:288)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7870)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1019)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.preference.Preference.setOnPreferenceChangeListener(androidx.preference.Preference$OnPreferenceChangeListener)' on a null object reference
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settingslib.core.AbstractPreferenceController.displayPreference(AbstractPreferenceController.java:37)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.lambda$displayResourceTilesToScreen$7(DashboardFragment.java:339)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.$r8$lambda$7KgqziyHu5rnhM8JHZ4buqOlhzM(Unknown Source:0)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment$$ExternalSyntheticLambda2.accept(Unknown Source:4)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1390)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:604)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:283)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.Iterator.forEachRemaining(Iterator.java:116)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:475)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:133)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:236)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:435)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.displayResourceTilesToScreen(DashboardFragment.java:338)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.displayResourceTiles(DashboardFragment.java:330)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.refreshAllPreferences(DashboardFragment.java:431)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.onCreatePreferences(DashboardFragment.java:182)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.network.NetworkDashboardFragment.onCreatePreferences(NetworkDashboardFragment.java:76)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:161)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settingslib.core.lifecycle.ObservablePreferenceFragment.onCreate(ObservablePreferenceFragment.java:61)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.SettingsPreferenceFragment.onCreate(SettingsPreferenceFragment.java:126)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.dashboard.DashboardFragment.onCreate(DashboardFragment.java:150)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.Fragment.performCreate(Fragment.java:2939)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:451)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:254)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2209)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2120)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2022)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at androidx.fragment.app.FragmentManager.executePendingTransactions(FragmentManager.java:603)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.SettingsActivity.switchToFragment(SettingsActivity.java:727)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.SettingsActivity.launchSettingFragment(SettingsActivity.java:509)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at com.android.settings.SettingsActivity.onCreate(SettingsActivity.java:304)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8057)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8037)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1341)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3688)
|
||||
09-23 11:50:49.155 2227 2227 E AndroidRuntime: ... 12 more
|
@ -1,349 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: MSe1969 <mse1969@posteo.de>
|
||||
Date: Mon, 10 Sep 2018 12:05:40 +0200
|
||||
Subject: [PATCH] Network & Internet Settings: Add option to switch off Captive
|
||||
portal check
|
||||
|
||||
* Option added in Network & Internet Settings, which is equivalent to
|
||||
the adb shell command 'settings put global captive_portal_mode [1/0]'
|
||||
* Will be reset to default, if 'Reset network settings' is chosen (menu)
|
||||
* Warning dialog is shown, when captive portal check is switched off
|
||||
* Hidden under 'advanced'
|
||||
|
||||
Cherry-picked from lin17-microG repo
|
||||
|
||||
Change-Id: Ibbffdb5f3930df74ca8b4ba93d451f7fad086989
|
||||
---
|
||||
res/values-de/cm_strings.xml | 3 +
|
||||
res/values/cm_strings.xml | 5 ++
|
||||
res/xml/network_and_internet.xml | 7 ++
|
||||
.../android/settings/ResetNetworkConfirm.java | 4 +
|
||||
...CaptivePortalModePreferenceController.java | 82 +++++++++++++++++++
|
||||
.../network/CaptivePortalWarningDialog.java | 74 +++++++++++++++++
|
||||
.../CaptivePortalWarningDialogHost.java | 32 ++++++++
|
||||
.../network/NetworkDashboardFragment.java | 17 +++-
|
||||
8 files changed, 223 insertions(+), 1 deletion(-)
|
||||
create mode 100644 src/com/android/settings/network/CaptivePortalModePreferenceController.java
|
||||
create mode 100644 src/com/android/settings/network/CaptivePortalWarningDialog.java
|
||||
create mode 100644 src/com/android/settings/network/CaptivePortalWarningDialogHost.java
|
||||
|
||||
diff --git a/res/values-de/cm_strings.xml b/res/values-de/cm_strings.xml
|
||||
index 1428fbf300..12b4a68a04 100644
|
||||
--- a/res/values-de/cm_strings.xml
|
||||
+++ b/res/values-de/cm_strings.xml
|
||||
@@ -56,6 +56,9 @@
|
||||
<string name="volume_link_notification_title">Klingelton- und Benachrichtigungslautstärke verknüpfen</string>
|
||||
<string name="unlock_scramble_pin_layout_title">Zufällige Anordnung</string>
|
||||
<string name="unlock_scramble_pin_layout_summary">Bei jedem Entsperrversuch die Ziffernanordnung zufällig neu wählen</string>
|
||||
+ <string name="captive_portal_switch_title">Captive Portal Erkennung</string>
|
||||
+ <string name="captive_portal_switch_summary">Ein-/Ausschalten der Captive Portal Erkennung (Vorgabe EIN).</string>
|
||||
+ <string name="captive_portal_switch_warning">Nach dem Ausschalten der Captive-Portal-Erkennung empfangen Sie keine Verbindungs-Rückmeldung mehr. Wirklich fortfahren?</string>
|
||||
<string name="lock_settings_picker_pattern_size_message">Größe des Musters auswählen</string>
|
||||
<string name="lockpattern_settings_enable_error_path_title">Sperrmuster-Fehler anzeigen</string>
|
||||
<string name="lockpattern_settings_enable_dots_title">Sperrmuster-Punkte anzeigen</string>
|
||||
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
|
||||
index 2e727640c2..6f14256ebf 100644
|
||||
--- a/res/values/cm_strings.xml
|
||||
+++ b/res/values/cm_strings.xml
|
||||
@@ -82,6 +82,11 @@
|
||||
<string name="unlock_scramble_pin_layout_title">Scramble layout</string>
|
||||
<string name="unlock_scramble_pin_layout_summary">Scramble PIN layout when unlocking device</string>
|
||||
|
||||
+ <!-- Captive Portal -->
|
||||
+ <string name="captive_portal_switch_title">Captive portal mode</string>
|
||||
+ <string name="captive_portal_switch_summary">Enable or disable the captive portal probing for connection attempts (default ON).</string>
|
||||
+ <string name="captive_portal_switch_warning">If you switch off the captive portal, you will not receive connectivity informations any longer. Really switch off?</string>
|
||||
+
|
||||
<!-- Fingerprint wake-and-unlock -->
|
||||
<string name="fingerprint_wake_unlock_title">Touch fingerprint to unlock</string>
|
||||
<string name="fingerprint_wake_unlock_touch">Listens for events while the screen is off</string>
|
||||
diff --git a/res/xml/network_and_internet.xml b/res/xml/network_and_internet.xml
|
||||
index d842aad021..7f82235a2b 100644
|
||||
--- a/res/xml/network_and_internet.xml
|
||||
+++ b/res/xml/network_and_internet.xml
|
||||
@@ -125,4 +125,11 @@
|
||||
android:summary="@string/summary_placeholder"
|
||||
android:order="25"
|
||||
settings:controller="com.android.settings.network.AdaptiveConnectivityPreferenceController"/>
|
||||
+
|
||||
+ <SwitchPreference
|
||||
+ android:key="captive_portal_switch"
|
||||
+ android:title="@string/captive_portal_switch_title"
|
||||
+ android:summary="@string/captive_portal_switch_summary"
|
||||
+ android:order="30" />
|
||||
+
|
||||
</PreferenceScreen>
|
||||
diff --git a/src/com/android/settings/ResetNetworkConfirm.java b/src/com/android/settings/ResetNetworkConfirm.java
|
||||
index f79bdb2e36..58372582e1 100644
|
||||
--- a/src/com/android/settings/ResetNetworkConfirm.java
|
||||
+++ b/src/com/android/settings/ResetNetworkConfirm.java
|
||||
@@ -37,6 +37,7 @@ import android.os.Looper;
|
||||
import android.os.RecoverySystem;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
+import android.provider.Settings;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
|
||||
import android.telephony.TelephonyManager;
|
||||
@@ -142,6 +143,9 @@ public class ResetNetworkConfirm extends InstrumentedFragment {
|
||||
}
|
||||
}
|
||||
|
||||
+ Settings.Global.putInt(mContext.getContentResolver(),
|
||||
+ Settings.Global.CAPTIVE_PORTAL_MODE, 1);
|
||||
+
|
||||
restoreDefaultApn(mContext);
|
||||
Log.d(TAG, "network factoryReset complete. succeeded: "
|
||||
+ String.valueOf(isResetSucceed));
|
||||
diff --git a/src/com/android/settings/network/CaptivePortalModePreferenceController.java b/src/com/android/settings/network/CaptivePortalModePreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..ae21b29292
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/network/CaptivePortalModePreferenceController.java
|
||||
@@ -0,0 +1,82 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2018 The LineageOS Project
|
||||
+ *
|
||||
+ * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+ * you may not use this file except in compliance with the License.
|
||||
+ * You may obtain a copy of the License at
|
||||
+ *
|
||||
+ * http://www.apache.org/licenses/LICENSE-2.0
|
||||
+ *
|
||||
+ * Unless required by applicable law or agreed to in writing, software
|
||||
+ * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+ * See the License for the specific language governing permissions and
|
||||
+ * limitations under the License.
|
||||
+ */
|
||||
+package com.android.settings.network;
|
||||
+
|
||||
+import android.content.Context;
|
||||
+import android.provider.Settings;
|
||||
+
|
||||
+import androidx.fragment.app.Fragment;
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.SwitchPreference;
|
||||
+
|
||||
+import com.android.settings.core.PreferenceControllerMixin;
|
||||
+import com.android.settingslib.core.AbstractPreferenceController;
|
||||
+
|
||||
+public class CaptivePortalModePreferenceController extends AbstractPreferenceController
|
||||
+ implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
|
||||
+
|
||||
+ private static final String TAG = "CaptivePortalModePreferenceController";
|
||||
+ private static final String CAPTIVE_PORTAL_SWITCH_KEY = "captive_portal_switch";
|
||||
+
|
||||
+ private SwitchPreference mCaptivePortalMode;
|
||||
+ private Preference mPreference;
|
||||
+ private final Fragment mFragment;
|
||||
+
|
||||
+ public CaptivePortalModePreferenceController(Context context, Fragment hostFragment) {
|
||||
+ super(context);
|
||||
+
|
||||
+ mFragment = hostFragment;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void updateState(Preference preference) {
|
||||
+ boolean value = (Settings.Global.getInt(mContext.getContentResolver(),
|
||||
+ Settings.Global.CAPTIVE_PORTAL_MODE,
|
||||
+ Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT) != 0);
|
||||
+ ((SwitchPreference) preference).setChecked(value);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
+ mPreference = preference;
|
||||
+ if ((Boolean) newValue) {
|
||||
+ Settings.Global.putInt(mContext.getContentResolver(),
|
||||
+ Settings.Global.CAPTIVE_PORTAL_MODE, 1);
|
||||
+ } else {
|
||||
+ CaptivePortalWarningDialog.show(mFragment);
|
||||
+ }
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ public void onCaptivePortalSwitchOffDialogConfirmed() {
|
||||
+ Settings.Global.putInt(mContext.getContentResolver(),
|
||||
+ Settings.Global.CAPTIVE_PORTAL_MODE, 0);
|
||||
+ }
|
||||
+
|
||||
+ public void onCaptivePortalSwitchOffDialogDismissed() {
|
||||
+ updateState(mPreference);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean isAvailable() {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return CAPTIVE_PORTAL_SWITCH_KEY;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/com/android/settings/network/CaptivePortalWarningDialog.java b/src/com/android/settings/network/CaptivePortalWarningDialog.java
|
||||
new file mode 100644
|
||||
index 0000000000..d27bd7d2f0
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/network/CaptivePortalWarningDialog.java
|
||||
@@ -0,0 +1,74 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2018 The LineageOS Project
|
||||
+ *
|
||||
+ * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+ * you may not use this file except in compliance with the License.
|
||||
+ * You may obtain a copy of the License at
|
||||
+ *
|
||||
+ * http://www.apache.org/licenses/LICENSE-2.0
|
||||
+ *
|
||||
+ * Unless required by applicable law or agreed to in writing, software
|
||||
+ * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+ * See the License for the specific language governing permissions and
|
||||
+ * limitations under the License.
|
||||
+ */
|
||||
+
|
||||
+package com.android.settings.network;
|
||||
+
|
||||
+import android.app.Dialog;
|
||||
+import android.content.DialogInterface;
|
||||
+import android.os.Bundle;
|
||||
+
|
||||
+import androidx.appcompat.app.AlertDialog;
|
||||
+import androidx.fragment.app.Fragment;
|
||||
+import androidx.fragment.app.FragmentManager;
|
||||
+
|
||||
+import com.android.internal.logging.nano.MetricsProto;
|
||||
+import com.android.settings.R;
|
||||
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
+
|
||||
+public class CaptivePortalWarningDialog extends InstrumentedDialogFragment implements
|
||||
+ DialogInterface.OnClickListener, DialogInterface.OnDismissListener {
|
||||
+
|
||||
+ public static final String TAG = "CaptivePortalWarningDialog";
|
||||
+
|
||||
+ public static void show(Fragment host) {
|
||||
+ final FragmentManager manager = host.getActivity().getSupportFragmentManager();
|
||||
+ if (manager.findFragmentByTag(TAG) == null) {
|
||||
+ final CaptivePortalWarningDialog dialog =
|
||||
+ new CaptivePortalWarningDialog();
|
||||
+ dialog.setTargetFragment(host, 0 /* requestCode */);
|
||||
+ dialog.show(manager, TAG);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getMetricsCategory() {
|
||||
+ return MetricsProto.MetricsEvent.TYPE_UNKNOWN;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
+ return new AlertDialog.Builder(getActivity())
|
||||
+ .setTitle(R.string.captive_portal_switch_title)
|
||||
+ .setMessage(R.string.captive_portal_switch_warning)
|
||||
+ .setIconAttribute(android.R.attr.alertDialogIcon)
|
||||
+ .setPositiveButton(android.R.string.yes, this /* onClickListener */)
|
||||
+ .setNegativeButton(android.R.string.no, this /* onClickListener */)
|
||||
+ .create();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onClick(DialogInterface dialog, int which) {
|
||||
+ final CaptivePortalWarningDialogHost host = (CaptivePortalWarningDialogHost) getTargetFragment();
|
||||
+ if (host == null) {
|
||||
+ return;
|
||||
+ }
|
||||
+ if (which == DialogInterface.BUTTON_POSITIVE) {
|
||||
+ host.onCaptivePortalSwitchOffDialogConfirmed();
|
||||
+ } else {
|
||||
+ host.onCaptivePortalSwitchOffDialogDismissed();
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/com/android/settings/network/CaptivePortalWarningDialogHost.java b/src/com/android/settings/network/CaptivePortalWarningDialogHost.java
|
||||
new file mode 100644
|
||||
index 0000000000..7a04d1f831
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/network/CaptivePortalWarningDialogHost.java
|
||||
@@ -0,0 +1,32 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2018 The LineageOS Project
|
||||
+ *
|
||||
+ * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+ * you may not use this file except in compliance with the License.
|
||||
+ * You may obtain a copy of the License at
|
||||
+ *
|
||||
+ * http://www.apache.org/licenses/LICENSE-2.0
|
||||
+ *
|
||||
+ * Unless required by applicable law or agreed to in writing, software
|
||||
+ * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+ * See the License for the specific language governing permissions and
|
||||
+ * limitations under the License.
|
||||
+ */
|
||||
+
|
||||
+package com.android.settings.network;
|
||||
+
|
||||
+/**
|
||||
+ * Interface for CaptivePortalWarningDialogHost callbacks.
|
||||
+ */
|
||||
+public interface CaptivePortalWarningDialogHost {
|
||||
+ /**
|
||||
+ * Called when the user presses YES/ok on the warning dialog.
|
||||
+ */
|
||||
+ void onCaptivePortalSwitchOffDialogConfirmed();
|
||||
+
|
||||
+ /**
|
||||
+ * Called when the user presses NO/cancel on the warning dialog.
|
||||
+ */
|
||||
+ void onCaptivePortalSwitchOffDialogDismissed();
|
||||
+}
|
||||
diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java
|
||||
index 286e4e36e5..0eb79c5d4c 100644
|
||||
--- a/src/com/android/settings/network/NetworkDashboardFragment.java
|
||||
+++ b/src/com/android/settings/network/NetworkDashboardFragment.java
|
||||
@@ -44,7 +44,7 @@ import java.util.List;
|
||||
|
||||
@SearchIndexable
|
||||
public class NetworkDashboardFragment extends DashboardFragment implements
|
||||
- MobilePlanPreferenceHost {
|
||||
+ MobilePlanPreferenceHost, CaptivePortalWarningDialogHost {
|
||||
|
||||
private static final String TAG = "NetworkDashboardFrag";
|
||||
|
||||
@@ -100,6 +100,8 @@ public class NetworkDashboardFragment extends DashboardFragment implements
|
||||
new VpnPreferenceController(context);
|
||||
final PrivateDnsPreferenceController privateDnsPreferenceController =
|
||||
new PrivateDnsPreferenceController(context);
|
||||
+ final CaptivePortalModePreferenceController captiveportalModePreferenceController =
|
||||
+ new CaptivePortalModePreferenceController(context, fragment);
|
||||
|
||||
if (lifecycle != null) {
|
||||
lifecycle.addObserver(mobilePlanPreferenceController);
|
||||
@@ -118,10 +120,23 @@ public class NetworkDashboardFragment extends DashboardFragment implements
|
||||
controllers.add(internetPreferenceController);
|
||||
}
|
||||
controllers.add(privateDnsPreferenceController);
|
||||
+ controllers.add(captiveportalModePreferenceController);
|
||||
controllers.add(new NetworkProviderCallsSmsController(context, lifecycle));
|
||||
return controllers;
|
||||
}
|
||||
|
||||
+ public void onCaptivePortalSwitchOffDialogConfirmed() {
|
||||
+ final CaptivePortalModePreferenceController controller =
|
||||
+ use(CaptivePortalModePreferenceController.class);
|
||||
+ controller.onCaptivePortalSwitchOffDialogConfirmed();
|
||||
+ }
|
||||
+
|
||||
+ public void onCaptivePortalSwitchOffDialogDismissed() {
|
||||
+ final CaptivePortalModePreferenceController controller =
|
||||
+ use(CaptivePortalModePreferenceController.class);
|
||||
+ controller.onCaptivePortalSwitchOffDialogDismissed();
|
||||
+ }
|
||||
+
|
||||
@Override
|
||||
public void showMobilePlanMessageDialog() {
|
||||
showDialog(MANAGE_MOBILE_PLAN_DIALOG_ID);
|
@ -0,0 +1,257 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Pratyush <codelab@pratyush.dev>
|
||||
Date: Wed, 20 Oct 2021 05:40:11 +0530
|
||||
Subject: [PATCH] add toggle to set captiveportal settings
|
||||
|
||||
Access is disallowed for users that are disallowed from configuring
|
||||
Private DNS settings. This restriction provides administrative control
|
||||
over this feature in a way that's compatible with existing device
|
||||
manager implementations. Private DNS is the closest fit from the
|
||||
existing user management restrictions that are available.
|
||||
|
||||
Co-authored-by: stuux <stuux@posteo.net>
|
||||
Co-authored-by: Renlord <me@renlord.com>
|
||||
Co-authored-by: Danny Lin <danny@kdrag0n.dev>
|
||||
Co-authored-by: anupritaisno1 <www.anuprita804@gmail.com>
|
||||
Signed-off-by: empratyush <codelab@pratyush.dev>
|
||||
[tad@spotco.us]: removed the option for GrapheneOS servers
|
||||
Change-Id: I8602bc4be0b896416282b7cf08bcd45b2cc216c6
|
||||
---
|
||||
res/values/arrays.xml | 10 +
|
||||
res/values/strings.xml | 3 +
|
||||
...ConnectivityCheckPreferenceController.java | 176 ++++++++++++++++++
|
||||
.../network/NetworkDashboardFragment.java | 3 +
|
||||
4 files changed, 192 insertions(+)
|
||||
create mode 100644 src/com/android/settings/network/ConnectivityCheckPreferenceController.java
|
||||
|
||||
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
|
||||
index f50d130936..bb95662047 100644
|
||||
--- a/res/values/arrays.xml
|
||||
+++ b/res/values/arrays.xml
|
||||
@@ -229,6 +229,16 @@
|
||||
<item>259200000</item>
|
||||
</string-array>
|
||||
|
||||
+ <string-array name="connectivity_check_entries">
|
||||
+ <item>Standard (Google)</item>
|
||||
+ <item>Disabled</item>
|
||||
+ </string-array>
|
||||
+
|
||||
+ <string-array name="connectivity_check_values" translatable="false">
|
||||
+ <item>0</item>
|
||||
+ <item>1</item>
|
||||
+ </string-array>
|
||||
+
|
||||
<!-- Security settings. The delay after screen is turned off until device locks.
|
||||
These are shown in a list dialog. -->
|
||||
<string-array name="lock_after_timeout_entries">
|
||||
diff --git a/res/values/strings.xml b/res/values/strings.xml
|
||||
index 67c47bc7b3..58b17eeccf 100644
|
||||
--- a/res/values/strings.xml
|
||||
+++ b/res/values/strings.xml
|
||||
@@ -691,6 +691,9 @@
|
||||
<string name="auto_reboot_title">Auto reboot</string>
|
||||
<string name="auto_reboot_summary">Automatically reboot the device, if the phone hasn\'t been unlocked within the selected number of hours.</string>
|
||||
|
||||
+ <string name="connectivity_check_title">Internet connectivity check</string>
|
||||
+ <string name="connectivity_check_summary">HTTP endpoints to use for performing internet connectivity checks.</string>
|
||||
+
|
||||
<!-- Text shown for summary of owner info setting (if none set) [CHAR LIMIT=40]-->
|
||||
<string name="owner_info_settings_summary">None</string>
|
||||
<!-- Description of how many characters are used in owner info [CHAR LIMIT=40]-->
|
||||
diff --git a/src/com/android/settings/network/ConnectivityCheckPreferenceController.java b/src/com/android/settings/network/ConnectivityCheckPreferenceController.java
|
||||
new file mode 100644
|
||||
index 0000000000..ae62133141
|
||||
--- /dev/null
|
||||
+++ b/src/com/android/settings/network/ConnectivityCheckPreferenceController.java
|
||||
@@ -0,0 +1,176 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2020 The Android Open Source Project
|
||||
+ *
|
||||
+ * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+ * you may not use this file except in compliance with the License.
|
||||
+ * You may obtain a copy of the License at
|
||||
+ *
|
||||
+ * http://www.apache.org/licenses/LICENSE-2.0
|
||||
+ *
|
||||
+ * Unless required by applicable law or agreed to in writing, software
|
||||
+ * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+ * See the License for the specific language governing permissions and
|
||||
+ * limitations under the License.
|
||||
+ */
|
||||
+
|
||||
+package com.android.settings.network;
|
||||
+
|
||||
+import android.content.ContentResolver;
|
||||
+import android.content.Context;
|
||||
+import android.content.res.Resources;
|
||||
+import android.database.ContentObserver;
|
||||
+import android.net.LinkProperties;
|
||||
+import android.net.Network;
|
||||
+import android.os.Handler;
|
||||
+import android.os.Looper;
|
||||
+import android.os.UserHandle;
|
||||
+import android.os.UserManager;
|
||||
+import android.provider.Settings;
|
||||
+import androidx.preference.ListPreference;
|
||||
+import androidx.preference.Preference;
|
||||
+import androidx.preference.PreferenceScreen;
|
||||
+import com.android.internal.util.ArrayUtils;
|
||||
+import com.android.settings.R;
|
||||
+import com.android.settings.core.BasePreferenceController;
|
||||
+import com.android.settings.core.PreferenceControllerMixin;
|
||||
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||
+import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
+import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||
+
|
||||
+public class ConnectivityCheckPreferenceController
|
||||
+ extends BasePreferenceController
|
||||
+ implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener,
|
||||
+ OnResume {
|
||||
+
|
||||
+ // imported defaults from AOSP NetworkStack
|
||||
+ private static final String STANDARD_HTTPS_URL =
|
||||
+ "https://www.google.com/generate_204";
|
||||
+ private static final String STANDARD_HTTP_URL =
|
||||
+ "http://connectivitycheck.gstatic.com/generate_204";
|
||||
+ private static final String STANDARD_FALLBACK_URL =
|
||||
+ "http://www.google.com/gen_204";
|
||||
+ private static final String STANDARD_OTHER_FALLBACK_URLS =
|
||||
+ "http://play.googleapis.com/generate_204";
|
||||
+
|
||||
+ private static final int STANDARD_CAPTIVE_PORTAL_HTTP_URL_INTVAL = 0;
|
||||
+ private static final int DISABLED_CAPTIVE_PORTAL_INTVAL = 1;
|
||||
+
|
||||
+ private static final String KEY_CONNECTIVITY_CHECK_SETTINGS =
|
||||
+ "connectivity_check_settings";
|
||||
+
|
||||
+ private ListPreference mConnectivityPreference;
|
||||
+
|
||||
+ public ConnectivityCheckPreferenceController(Context context) {
|
||||
+ super(context, KEY_CONNECTIVITY_CHECK_SETTINGS);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int getAvailabilityStatus() {
|
||||
+ if (isDisabledByAdmin()) {
|
||||
+ return BasePreferenceController.DISABLED_FOR_USER;
|
||||
+ }
|
||||
+ return BasePreferenceController.AVAILABLE;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void displayPreference(PreferenceScreen screen) {
|
||||
+ ListPreference captiveList = new ListPreference(screen.getContext());
|
||||
+ captiveList.setKey(KEY_CONNECTIVITY_CHECK_SETTINGS);
|
||||
+ captiveList.setOrder(30);
|
||||
+ captiveList.setIcon(R.drawable.ic_settings_language);
|
||||
+ captiveList.setTitle(R.string.connectivity_check_title);
|
||||
+ captiveList.setSummary(R.string.connectivity_check_summary);
|
||||
+ captiveList.setEntries(R.array.connectivity_check_entries);
|
||||
+ captiveList.setEntryValues(R.array.connectivity_check_values);
|
||||
+
|
||||
+ if (mConnectivityPreference == null) {
|
||||
+ screen.addPreference(captiveList);
|
||||
+ mConnectivityPreference = captiveList;
|
||||
+ }
|
||||
+ super.displayPreference(screen);
|
||||
+ updatePreferenceState();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getPreferenceKey() {
|
||||
+ return KEY_CONNECTIVITY_CHECK_SETTINGS;
|
||||
+ }
|
||||
+
|
||||
+ private void updatePreferenceState() {
|
||||
+ if (Settings.Global.getInt(mContext.getContentResolver(),
|
||||
+ Settings.Global.CAPTIVE_PORTAL_MODE, Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT)
|
||||
+ == Settings.Global.CAPTIVE_PORTAL_MODE_IGNORE) {
|
||||
+ mConnectivityPreference.setValueIndex(DISABLED_CAPTIVE_PORTAL_INTVAL);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ String pref = Settings.Global.getString(
|
||||
+ mContext.getContentResolver(), Settings.Global.CAPTIVE_PORTAL_HTTP_URL);
|
||||
+ if (STANDARD_HTTP_URL.equals(pref)) {
|
||||
+ mConnectivityPreference.setValueIndex(
|
||||
+ STANDARD_CAPTIVE_PORTAL_HTTP_URL_INTVAL);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onResume() {
|
||||
+ updatePreferenceState();
|
||||
+ if (mConnectivityPreference != null) {
|
||||
+ setCaptivePortalURLs(
|
||||
+ mContext.getContentResolver(),
|
||||
+ Integer.parseInt(mConnectivityPreference.getValue()));
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ private void setCaptivePortalURLs(ContentResolver cr, int mode) {
|
||||
+ switch (mode) {
|
||||
+ case STANDARD_CAPTIVE_PORTAL_HTTP_URL_INTVAL:
|
||||
+ Settings.Global.putString(cr, Settings.Global.CAPTIVE_PORTAL_HTTP_URL,
|
||||
+ STANDARD_HTTP_URL);
|
||||
+ Settings.Global.putString(cr, Settings.Global.CAPTIVE_PORTAL_HTTPS_URL,
|
||||
+ STANDARD_HTTPS_URL);
|
||||
+ Settings.Global.putString(cr, Settings.Global.CAPTIVE_PORTAL_FALLBACK_URL,
|
||||
+ STANDARD_FALLBACK_URL);
|
||||
+ Settings.Global.putString(
|
||||
+ cr, Settings.Global.CAPTIVE_PORTAL_OTHER_FALLBACK_URLS,
|
||||
+ STANDARD_OTHER_FALLBACK_URLS);
|
||||
+ Settings.Global.putInt(cr, Settings.Global.CAPTIVE_PORTAL_MODE,
|
||||
+ Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT);
|
||||
+ break;
|
||||
+ default:
|
||||
+ // Default URLs as placeholder
|
||||
+ Settings.Global.putString(cr, Settings.Global.CAPTIVE_PORTAL_HTTP_URL,
|
||||
+ STANDARD_HTTP_URL);
|
||||
+ Settings.Global.putString(cr, Settings.Global.CAPTIVE_PORTAL_HTTPS_URL,
|
||||
+ STANDARD_HTTPS_URL);
|
||||
+ Settings.Global.putString(cr, Settings.Global.CAPTIVE_PORTAL_FALLBACK_URL,
|
||||
+ STANDARD_FALLBACK_URL);
|
||||
+ Settings.Global.putString(
|
||||
+ cr, Settings.Global.CAPTIVE_PORTAL_OTHER_FALLBACK_URLS,
|
||||
+ STANDARD_OTHER_FALLBACK_URLS);
|
||||
+ Settings.Global.putInt(cr, Settings.Global.CAPTIVE_PORTAL_MODE,
|
||||
+ Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object value) {
|
||||
+ final String key = preference.getKey();
|
||||
+ if (KEY_CONNECTIVITY_CHECK_SETTINGS.equals(key)) {
|
||||
+ setCaptivePortalURLs(mContext.getContentResolver(),
|
||||
+ Integer.parseInt((String)value));
|
||||
+ return true;
|
||||
+ } else {
|
||||
+ return false;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ private EnforcedAdmin getEnforcedAdmin() {
|
||||
+ return RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
||||
+ mContext, UserManager.DISALLOW_CONFIG_PRIVATE_DNS,
|
||||
+ UserHandle.myUserId());
|
||||
+ }
|
||||
+
|
||||
+ private boolean isDisabledByAdmin() { return getEnforcedAdmin() != null; }
|
||||
+}
|
||||
diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java
|
||||
index 286e4e36e5..2eb788fbd0 100644
|
||||
--- a/src/com/android/settings/network/NetworkDashboardFragment.java
|
||||
+++ b/src/com/android/settings/network/NetworkDashboardFragment.java
|
||||
@@ -119,6 +119,9 @@ public class NetworkDashboardFragment extends DashboardFragment implements
|
||||
}
|
||||
controllers.add(privateDnsPreferenceController);
|
||||
controllers.add(new NetworkProviderCallsSmsController(context, lifecycle));
|
||||
+ ConnectivityCheckPreferenceController connectivityCheck =
|
||||
+ new ConnectivityCheckPreferenceController(context);
|
||||
+ controllers.add(connectivityCheck);
|
||||
return controllers;
|
||||
}
|
||||
|
@ -280,7 +280,6 @@ if [ "$DOS_GRAPHENE_CONSTIFY" = true ]; then applyPatch "$DOS_PATCHES/android_pa
|
||||
fi;
|
||||
|
||||
if enterAndClear "packages/apps/Settings"; then
|
||||
#applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0001-Captive_Portal_Toggle.patch"; #Add option to disable captive portal checks (MSe1969) #XXX 19REBASE: broken
|
||||
applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0004-Private_DNS.patch"; #More 'Private DNS' options (heavily based off of a CalyxOS patch)
|
||||
applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0005-Automatic_Reboot.patch"; #Timeout for reboot (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0006-Bluetooth_Timeout.patch"; #Timeout for Bluetooth (CalyxOS)
|
||||
@ -290,6 +289,7 @@ if [ "$DOS_GRAPHENE_EXEC" = true ]; then applyPatch "$DOS_PATCHES/android_packag
|
||||
applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0011-Random_MAC.patch"; #Add option to always randomize MAC (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0009-Install_Restrictions.patch"; #UserManager app installation restrictions (GrapheneOS)
|
||||
applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0012-hosts_toggle.patch"; #Add a toggle to disable /etc/hosts lookup (heavily based off of a GrapheneOS patch)
|
||||
applyPatch "$DOS_PATCHES/android_packages_apps_Settings/0013-Captive_Portal_Toggle.patch"; #Add option to disable captive portal checks (GrapheneOS)
|
||||
sed -i 's/if (isFullDiskEncrypted()) {/if (false) {/' src/com/android/settings/accessibility/*AccessibilityService*.java; #Never disable secure start-up when enabling an accessibility service
|
||||
fi;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user