From 15e8df3fd64bfe8a5f4673d82443a18e351c10be Mon Sep 17 00:00:00 2001 From: Frank PREEL Date: Sat, 26 Jan 2019 21:22:19 +0100 Subject: [PATCH 01/13] Add DSN setting screen --- res/xml/dns_settings.xml | 54 +++++ src/com/android/settings/dns/DNSSettings.java | 209 ++++++++++++++++++ 2 files changed, 263 insertions(+) create mode 100755 res/xml/dns_settings.xml create mode 100755 src/com/android/settings/dns/DNSSettings.java diff --git a/res/xml/dns_settings.xml b/res/xml/dns_settings.xml new file mode 100755 index 00000000000..24e17f8ea60 --- /dev/null +++ b/res/xml/dns_settings.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + diff --git a/src/com/android/settings/dns/DNSSettings.java b/src/com/android/settings/dns/DNSSettings.java new file mode 100755 index 00000000000..508a34633ab --- /dev/null +++ b/src/com/android/settings/dns/DNSSettings.java @@ -0,0 +1,209 @@ +/* + * Copyright (C) 2019 e.foundation + * + * 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.dns; + +import android.content.Context; + +import android.os.UserHandle; + +//import android.content.pm.PackageManager; + +import android.provider.Settings; + +import com.android.settings.SettingsPreferenceFragment; +import android.view.View.OnClickListener; +import android.content.DialogInterface; +import com.android.settings.search.Indexable; +import com.android.internal.logging.nano.MetricsProto; + +import com.android.settings.widget.ToggleSwitch; + +import com.android.settings.R; + +import android.os.Bundle; +import android.content.Intent; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.support.v7.preference.Preference; +import android.support.v7.preference.Preference.OnPreferenceChangeListener; + +import android.support.v7.preference.EditTextPreference; +import android.support.v7.preference.TwoStatePreference; + +import android.support.v14.preference.SwitchPreference; +import android.support.v7.preference.EditTextPreference; + +import android.util.Log; + + +import android.net.NetworkAgent; +import android.net.NetworkInfo; + +import android.net.ConnectivityManager; + + +import android.net.NetworkUtils; + +import java.net.Inet4Address; + +import android.net.wifi.WifiManager; +import android.telephony.TelephonyManager; +import java.lang.reflect.Method; + +import static android.provider.Settings.System.VIBRATE_WHEN_RINGING; + +public class DNSSettings extends SettingsPreferenceFragment + implements OnPreferenceChangeListener, Indexable { + + private static final String TAG = "DNSSettings"; + + private static final String KEY_E_TOGGLE_DNS = "toggle_e_dns"; + private final static String KEY_E_DNS_VALUE = "e_dns_value"; + + private SwitchPreference useNetworkDNS; + private EditTextPreference overrideDNSIPV4; + + private static final String USE_NETWORK_DNS = "USE_NETWORK_DNS"; + private static final String OVERRIDE_DNS_IP_V4 = "OVERRIDE_DNS_IP_V4"; // IPV4 DNS TO USE. + + private String dnsNotSet; // Default value + + @Override + public int getMetricsCategory() { + return MetricsProto.MetricsEvent.SETTINGS_NETWORK_CATEGORY; + } + + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + + //pm = getActivity().getPackageManager(); + + dnsNotSet = getResources().getString(R.string.e_dns_not_set); + + addPreferencesFromResource(R.xml.dns_settings); + useNetworkDNS = (SwitchPreference) findPreference(KEY_E_TOGGLE_DNS); + + overrideDNSIPV4 = (EditTextPreference) findPreference(KEY_E_DNS_VALUE); + + for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) { + getPreferenceScreen().getPreference(i).setOnPreferenceChangeListener(this); + } + + int useNwDNS = Settings.System.getInt(getContext().getContentResolver(), USE_NETWORK_DNS, 1); + Log.v(TAG, "on create useNetworkDNS>>>"+useNwDNS); + ((TwoStatePreference) useNetworkDNS).setChecked(useNwDNS == 1); + if (useNwDNS == 1) { + boolean b = Settings.System.putInt(getContext().getContentResolver(), USE_NETWORK_DNS, 1); + Log.v(TAG, "Set value>>>"+b); + } + + String s = Settings.System.getString(getContext().getContentResolver(), OVERRIDE_DNS_IP_V4); + Log.v(TAG, "on create s>>>"+s); + overrideDNSIPV4.setSummary(checkNull(s)); + + overrideDNSIPV4.setText(s); + } + + private final String checkNull(String value) { + if (value == null || value.length() == 0) { + return dnsNotSet; + } else { + return value; + } + } + + private final Inet4Address getIPv4Address(String text) { + try { + return (Inet4Address) NetworkUtils.numericToInetAddress(text); + } catch (IllegalArgumentException | ClassCastException e) { + return null; + } + } + + public boolean onPreferenceChange(Preference preference, Object newValue) { + + final String key = preference.getKey(); + + if (KEY_E_TOGGLE_DNS.equals(key)) { + final boolean val = (Boolean) newValue; + boolean result = Settings.System.putInt(getContext().getContentResolver(), USE_NETWORK_DNS, val ? 1 : 0); + resartNetworks(); + return result; + + } + if (KEY_E_DNS_VALUE.equals(key)) { + final String val = (String) newValue; + final Inet4Address ipAddress = getIPv4Address(val); + if (ipAddress != null) { + overrideDNSIPV4.setSummary(checkNull(val)); + boolean result = Settings.System.putString(getContext().getContentResolver(), OVERRIDE_DNS_IP_V4, val); + resartNetworks(); + return result; + } + overrideDNSIPV4.setSummary(checkNull(dnsNotSet)); + } + + //new NetworkInfo(ConnectivityManager.TYPE_BLUETOOTH, 0, NETWORK_TYPE, ""); + return false; + } + + private final void resartNetworks(){ + + WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); + boolean wifiEnabled = wifiManager.isWifiEnabled(); + Log.v(TAG, "Wi-Fi state>"+wifiEnabled); + if (wifiEnabled) { + wifiManager.setWifiEnabled(false); + wifiManager.setWifiEnabled(true); + } + + //try{ + final TelephonyManager telMgr = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); + //final Method setDataEnabled = telMgr.getClass().getDeclaredMethod("setDataEnabled", Boolean.TYPE); + boolean dataEnabled = telMgr.isDataEnabled(); + Log.v(TAG, "Data network state>"+dataEnabled); + if (dataEnabled){ + telMgr.setDataEnabled(false); + telMgr.setDataEnabled(true); + } + //setDataEnabled.setAccessible(true); + //setDataEnabled.invoke(telMgr, Boolean.valueOf(enabled)); + //} + /*catch(Throwable t){ + Log.e(TAG, "setMobileConnectionEnabled", t); + }*/ + } + + @Override + public void onResume() { + super.onResume(); + } + + @Override + public void onPause() { + super.onPause(); + } + + @Override + public void onDestroy() { + super.onDestroy(); + } + +} -- GitLab From 03b9a4ac09277b14d98dbef0deed06f7ca4fb9d3 Mon Sep 17 00:00:00 2001 From: Frank PREEL Date: Sat, 26 Jan 2019 21:23:06 +0100 Subject: [PATCH 02/13] Add DSN setting screen --- res/values-fr/strings.xml | 27 +++++++++ res/xml/network_and_internet.xml | 98 ++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+) mode change 100644 => 100755 res/values-fr/strings.xml create mode 100755 res/xml/network_and_internet.xml diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml old mode 100644 new mode 100755 index 684fb28754a..74c171e92bd --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -1,5 +1,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + -- GitLab From f582c191494b637b4f2521ab17db1dc7bef3c581 Mon Sep 17 00:00:00 2001 From: frank Date: Thu, 31 Jan 2019 21:29:51 +0100 Subject: [PATCH 03/13] Default value --- src/com/android/settings/dns/DNSSettings.java | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/dns/DNSSettings.java b/src/com/android/settings/dns/DNSSettings.java index 508a34633ab..2e7f6808673 100755 --- a/src/com/android/settings/dns/DNSSettings.java +++ b/src/com/android/settings/dns/DNSSettings.java @@ -107,18 +107,10 @@ public class DNSSettings extends SettingsPreferenceFragment } int useNwDNS = Settings.System.getInt(getContext().getContentResolver(), USE_NETWORK_DNS, 1); - Log.v(TAG, "on create useNetworkDNS>>>"+useNwDNS); ((TwoStatePreference) useNetworkDNS).setChecked(useNwDNS == 1); - if (useNwDNS == 1) { - boolean b = Settings.System.putInt(getContext().getContentResolver(), USE_NETWORK_DNS, 1); - Log.v(TAG, "Set value>>>"+b); - } - + String s = Settings.System.getString(getContext().getContentResolver(), OVERRIDE_DNS_IP_V4); - Log.v(TAG, "on create s>>>"+s); - overrideDNSIPV4.setSummary(checkNull(s)); - - overrideDNSIPV4.setText(s); + overrideDNSIPV4.setText(checkNull(s)); } private final String checkNull(String value) { @@ -152,12 +144,12 @@ public class DNSSettings extends SettingsPreferenceFragment final String val = (String) newValue; final Inet4Address ipAddress = getIPv4Address(val); if (ipAddress != null) { - overrideDNSIPV4.setSummary(checkNull(val)); + overrideDNSIPV4.setText(checkNull(val)); boolean result = Settings.System.putString(getContext().getContentResolver(), OVERRIDE_DNS_IP_V4, val); resartNetworks(); return result; } - overrideDNSIPV4.setSummary(checkNull(dnsNotSet)); + overrideDNSIPV4.setText(checkNull(dnsNotSet)); } //new NetworkInfo(ConnectivityManager.TYPE_BLUETOOTH, 0, NETWORK_TYPE, ""); -- GitLab From eef801625226c0fff0ab66c41a81f376be820877 Mon Sep 17 00:00:00 2001 From: frank Date: Thu, 31 Jan 2019 21:31:21 +0100 Subject: [PATCH 04/13] English resources --- res/values/strings.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/res/values/strings.xml b/res/values/strings.xml index bc69cfa0760..e85ab32bbd9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1,5 +1,7 @@ + MicroG + + "DNS Settings" + "DNS" + "DNS" + "Enter DNS IP" + "Use network DNS" + "Allow to use DNS from network provider" + "Set DNS to use" + "9.9.9.9" + "DNS configuration" -- GitLab From d202236e9fecfed54b5efcd355d1d42fbb2c513a Mon Sep 17 00:00:00 2001 From: frank Date: Sun, 3 Feb 2019 15:22:14 +0100 Subject: [PATCH 05/13] DNS settings fragment for nougat is different rather than oreo --- res/xml/wireless_settings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml index 42ca9f07cef..b49dc106e79 100644 --- a/res/xml/wireless_settings.xml +++ b/res/xml/wireless_settings.xml @@ -1,5 +1,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - -- GitLab From ee513b84e6202150d4d891a67269ddf665ffcf51 Mon Sep 17 00:00:00 2001 From: frank Date: Sun, 3 Feb 2019 22:01:36 +0100 Subject: [PATCH 07/13] Add missing ressource --- res/drawable/ic_wifi_tethering.xml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 res/drawable/ic_wifi_tethering.xml diff --git a/res/drawable/ic_wifi_tethering.xml b/res/drawable/ic_wifi_tethering.xml new file mode 100644 index 00000000000..3dcd447f9b9 --- /dev/null +++ b/res/drawable/ic_wifi_tethering.xml @@ -0,0 +1,25 @@ + + + + -- GitLab From c06b0b61a799b76a0a71c850daae4768fee33535 Mon Sep 17 00:00:00 2001 From: frank Date: Mon, 4 Feb 2019 21:48:54 +0100 Subject: [PATCH 08/13] Enable Network (Nougat) --- src/com/android/settings/dns/DNSSettings.java | 63 ++++++++++++------- 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/src/com/android/settings/dns/DNSSettings.java b/src/com/android/settings/dns/DNSSettings.java index 2e7f6808673..d693c9d0ac8 100755 --- a/src/com/android/settings/dns/DNSSettings.java +++ b/src/com/android/settings/dns/DNSSettings.java @@ -28,7 +28,8 @@ import com.android.settings.SettingsPreferenceFragment; import android.view.View.OnClickListener; import android.content.DialogInterface; import com.android.settings.search.Indexable; -import com.android.internal.logging.nano.MetricsProto; +import com.android.internal.logging.MetricsProto.MetricsEvent; + import com.android.settings.widget.ToggleSwitch; @@ -86,7 +87,7 @@ public class DNSSettings extends SettingsPreferenceFragment @Override public int getMetricsCategory() { - return MetricsProto.MetricsEvent.SETTINGS_NETWORK_CATEGORY; + return MetricsEvent.WIRELESS; //TODO update } @Override @@ -157,30 +158,44 @@ public class DNSSettings extends SettingsPreferenceFragment } private final void resartNetworks(){ - - WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); - boolean wifiEnabled = wifiManager.isWifiEnabled(); - Log.v(TAG, "Wi-Fi state>"+wifiEnabled); - if (wifiEnabled) { - wifiManager.setWifiEnabled(false); - wifiManager.setWifiEnabled(true); - } - //try{ - final TelephonyManager telMgr = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); - //final Method setDataEnabled = telMgr.getClass().getDeclaredMethod("setDataEnabled", Boolean.TYPE); - boolean dataEnabled = telMgr.isDataEnabled(); - Log.v(TAG, "Data network state>"+dataEnabled); - if (dataEnabled){ - telMgr.setDataEnabled(false); - telMgr.setDataEnabled(true); + ConnectivityManager connectivitymanager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); + + NetworkInfo[] networkInfo = connectivitymanager.getAllNetworkInfo(); + + for (NetworkInfo netInfo : networkInfo) { + + if (netInfo.getTypeName().equalsIgnoreCase("WIFI")) { + + if (netInfo.isConnected()){ + WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); + //boolean wifiEnabled = wifiManager.isWifiEnabled(); + //Log.v(TAG, "Wi-Fi state>"+wifiEnabled); + //if (wifiEnabled) { + wifiManager.setWifiEnabled(false); + wifiManager.setWifiEnabled(true); + //} + } else { + + } + + } - //setDataEnabled.setAccessible(true); - //setDataEnabled.invoke(telMgr, Boolean.valueOf(enabled)); - //} - /*catch(Throwable t){ - Log.e(TAG, "setMobileConnectionEnabled", t); - }*/ + + if (netInfo.getTypeName().equalsIgnoreCase("MOBILE")) { + + if (netInfo.isConnected()){ + Intent intent = new Intent(); + intent.setComponent(new android.content.ComponentName("com.android.settings", "com.android.settings.Settings$DataUsageSummaryActivity")); + startActivity(intent); + } else { + + } + + + } + } + } @Override -- GitLab From eebe3401267152380ef1833899e91ca26ce3c83c Mon Sep 17 00:00:00 2001 From: frank Date: Mon, 4 Feb 2019 23:12:45 +0100 Subject: [PATCH 09/13] XML DNS fragment config --- res/xml/wireless_settings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml index b49dc106e79..ec61e1b07ad 100644 --- a/res/xml/wireless_settings.xml +++ b/res/xml/wireless_settings.xml @@ -49,8 +49,8 @@ android:key="e_dns_settings" android:title="@string/e_dns_mode" android:icon="@drawable/ic_settings" - android:order="0" - android:summary="@string/e_dns_summary"/> + settings:userRestriction="no_config_vpn" + settings:useAdminDisabledSummary="true"/> Date: Tue, 5 Feb 2019 13:41:01 +0100 Subject: [PATCH 10/13] Test duplicate --- res/xml/wireless_settings.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml index ec61e1b07ad..a89a10c5e14 100644 --- a/res/xml/wireless_settings.xml +++ b/res/xml/wireless_settings.xml @@ -37,6 +37,13 @@ settings:userRestriction="no_config_tethering" settings:useAdminDisabledSummary="true" /> + + Date: Tue, 5 Feb 2019 20:24:10 +0100 Subject: [PATCH 11/13] Add settings constructor --- res/xml/wireless_settings.xml | 7 ------- src/com/android/settings/dns/DNSSettings.java | 8 +++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml index a89a10c5e14..ec61e1b07ad 100644 --- a/res/xml/wireless_settings.xml +++ b/res/xml/wireless_settings.xml @@ -37,13 +37,6 @@ settings:userRestriction="no_config_tethering" settings:useAdminDisabledSummary="true" /> - - Date: Wed, 6 Feb 2019 19:09:19 +0100 Subject: [PATCH 12/13] Test mobile nw --- res/xml/wireless_settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml index ec61e1b07ad..ca5c7524f9b 100644 --- a/res/xml/wireless_settings.xml +++ b/res/xml/wireless_settings.xml @@ -49,7 +49,7 @@ android:key="e_dns_settings" android:title="@string/e_dns_mode" android:icon="@drawable/ic_settings" - settings:userRestriction="no_config_vpn" + settings:userRestriction="no_config_mobile_networks" settings:useAdminDisabledSummary="true"/> Date: Wed, 13 Feb 2019 20:22:07 +0100 Subject: [PATCH 13/13] DNS UI --- AndroidManifest.xml | 36 +++++++++++++++++++ res/xml/wireless_settings.xml | 5 ++- src/com/android/settings/Settings.java | 2 ++ .../android/settings/SettingsActivity.java | 3 ++ src/com/android/settings/dns/DNSSettings.java | 18 +++++++--- 5 files changed, 57 insertions(+), 7 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index d47a30af368..71d58d038b2 100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,3 +1,18 @@ + + + + + + + + + + + + + + + + + + + settings:userRestriction="no_config_vpn" + settings:useAdminDisabledSummary="true" />