summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/settings/TetherSettings.java60
-rw-r--r--src/com/android/settings/WirelessSettings.java12
2 files changed, 62 insertions, 10 deletions
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();