summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Greenwalt <robdroid@android.com>2010-02-12 14:21:37 -0800
committerRobert Greenwalt <robdroid@android.com>2010-02-16 16:56:43 -0800
commitc4764d24837cf297440f0ee97fe8adb943c56fe0 (patch)
treea90b2bc767ece7d146c17643eaece81f0e9df304
parent76ddcecd0d300d781ed8b3af4457a68ecbe98144 (diff)
downloadpackages_apps_settings-c4764d24837cf297440f0ee97fe8adb943c56fe0.zip
packages_apps_settings-c4764d24837cf297440f0ee97fe8adb943c56fe0.tar.gz
packages_apps_settings-c4764d24837cf297440f0ee97fe8adb943c56fe0.tar.bz2
Update Settings UI regarding tethering.
If tethering is disabled (build var or a gservices property) for the device, don't show any of the tethering options. If Usb Tethering is disabled (config.xml) don't show Usb Options. If Wifi Tethering is disabled (config.xml) don't show Wifi Options.
-rw-r--r--AndroidManifest.xml3
-rw-r--r--res/xml/wireless_settings.xml1
-rw-r--r--src/com/android/settings/TetherSettings.java60
-rw-r--r--src/com/android/settings/WirelessSettings.java12
4 files changed, 64 insertions, 12 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 67f0cde..ad4596e 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -171,8 +171,7 @@
</activity>
<activity android:name=".TetherSettings"
- android:configChanges="orientation|keyboardHidden"
- android:launchMode="singleTask">
+ android:clearTaskOnLaunch="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
index 9977505..5ee758a 100644
--- a/res/xml/wireless_settings.xml
+++ b/res/xml/wireless_settings.xml
@@ -57,6 +57,7 @@
</PreferenceScreen>
<PreferenceScreen
+ android:key="tether_settings"
android:title="@string/tether_settings_title"
android:summary="@string/tether_settings_summary">
<intent
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index 0a63de3..1e9c4e2 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -30,6 +30,7 @@ import android.preference.CheckBoxPreference;
import android.provider.Settings;
import android.util.Log;
+import java.util.ArrayList;
/*
* Displays preferences for Tethering.
*/
@@ -43,6 +44,12 @@ public class TetherSettings extends PreferenceActivity {
private BroadcastReceiver mTetherChangeReceiver;
+ private String[] mUsbRegexs;
+ private ArrayList mUsbIfaces;
+
+ private String[] mWifiRegexs;
+ private ArrayList mWifiIfaces;
+
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -51,12 +58,27 @@ public class TetherSettings extends PreferenceActivity {
mEnableTetherNotice = (CheckBoxPreference) findPreference(ENABLE_TETHER_NOTICE);
mUsbTether = (PreferenceScreen) findPreference(USB_TETHER_SETTINGS);
+
+ ConnectivityManager cm =
+ (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
+ mUsbRegexs = cm.getTetherableUsbRegexs();
+ if (mUsbRegexs.length == 0) {
+ getPreferenceScreen().removePreference(mUsbTether);
+ getPreferenceScreen().removePreference(mEnableTetherNotice);
+ }
+ mWifiRegexs = cm.getTetherableWifiRegexs();
}
+
private class TetherChangeReceiver extends BroadcastReceiver {
public void onReceive(Context content, Intent intent) {
- updateState(intent.getIntExtra(ConnectivityManager.EXTRA_AVAILABLE_TETHER_COUNT,0)>0,
- intent.getIntExtra(ConnectivityManager.EXTRA_ACTIVE_TETHER_COUNT,0)>0);
+ // TODO - this should understand the interface types
+ ArrayList<String> available = intent.getStringArrayListExtra(
+ ConnectivityManager.EXTRA_AVAILABLE_TETHER);
+ ArrayList<String> active = intent.getStringArrayListExtra(
+ ConnectivityManager.EXTRA_ACTIVE_TETHER);
+
+ updateState(available, active);
}
}
@@ -68,11 +90,9 @@ public class TetherSettings extends PreferenceActivity {
IntentFilter filter = new IntentFilter(ConnectivityManager.ACTION_TETHER_STATE_CHANGED);
mTetherChangeReceiver = new TetherChangeReceiver();
- registerReceiver(mTetherChangeReceiver, filter);
+ Intent intent = registerReceiver(mTetherChangeReceiver, filter);
- ConnectivityManager cm =
- (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
- updateState(cm.getTetherableIfaces().length>0, cm.getTetheredIfaces().length>0);
+ if (intent != null) mTetherChangeReceiver.onReceive(this, intent);
}
@Override
@@ -82,11 +102,33 @@ public class TetherSettings extends PreferenceActivity {
mTetherChangeReceiver = null;
}
- private void updateState(boolean isAvailable, boolean isTethered) {
- if (isTethered) {
+ private void updateState(ArrayList<String> available, ArrayList<String> tethered) {
+ boolean usbTethered = false;
+ boolean usbAvailable = false;
+ boolean wifiTethered = false;
+ boolean wifiAvailable = false;
+
+ for (String s : available) {
+ for (String regex : mUsbRegexs) {
+ if (s.matches(regex)) usbAvailable = true;
+ }
+ for (String regex : mWifiRegexs) {
+ if (s.matches(regex)) wifiAvailable = true;
+ }
+ }
+ for (String s : tethered) {
+ for (String regex : mUsbRegexs) {
+ if (s.matches(regex)) usbTethered = true;
+ }
+ for (String regex : mWifiRegexs) {
+ if (s.matches(regex)) wifiTethered = true;
+ }
+ }
+
+ if (usbTethered) {
mUsbTether.setSummary(R.string.usb_tethering_active_subtext);
mUsbTether.setEnabled(true);
- } else if (isAvailable) {
+ } else if (usbAvailable) {
mUsbTether.setSummary(R.string.usb_tethering_available_subtext);
mUsbTether.setEnabled(true);
} else {
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index bf75e27..6db2001 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -19,6 +19,7 @@ package com.android.settings;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
+import android.net.ConnectivityManager;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.ServiceManager;
@@ -28,6 +29,7 @@ import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.provider.Settings;
+import android.util.Log;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyProperties;
@@ -42,6 +44,7 @@ public class WirelessSettings extends PreferenceActivity {
private static final String KEY_WIFI_SETTINGS = "wifi_settings";
private static final String KEY_BT_SETTINGS = "bt_settings";
private static final String KEY_VPN_SETTINGS = "vpn_settings";
+ private static final String KEY_TETHER_SETTINGS = "tether_settings";
public static final String EXIT_ECM_RESULT = "exit_ecm_result";
public static final int REQUEST_CODE_EXIT_ECM = 1;
@@ -114,8 +117,15 @@ public class WirelessSettings extends PreferenceActivity {
if (ServiceManager.getService(BluetoothAdapter.BLUETOOTH_SERVICE) == null) {
findPreference(KEY_BT_SETTINGS).setEnabled(false);
}
+
+ // Disable Tethering if it's not allowed
+ ConnectivityManager cm =
+ (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
+ if (!cm.isTetheringSupported()) {
+ getPreferenceScreen().removePreference(findPreference(KEY_TETHER_SETTINGS));
+ }
}
-
+
@Override
protected void onResume() {
super.onResume();