Improved logic for Skip warning message

Use ConnectivityManager instead of TelephonyManager to determine
how device is connected.

Bug: 9118704
Change-Id: I5c1db90500591ca67e927976066a46e1f66e2e60
This commit is contained in:
Russell Brenner
2013-05-24 14:28:08 -07:00
parent b96ebf9eed
commit 765f55f52a

View File

@@ -257,9 +257,19 @@ public class WifiSettings extends SettingsPreferenceFragment
customButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (isPhone() && !hasSimProblem()) {
boolean isConnected = false;
Activity activity = getActivity();
final ConnectivityManager connectivity = (ConnectivityManager)
activity.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
final NetworkInfo info = connectivity.getActiveNetworkInfo();
isConnected = (info != null) && info.isConnected();
}
if (isConnected) {
// Warn of possible data charges
showDialog(WIFI_SKIPPED_DIALOG_ID);
} else {
// Warn of lack of updates
showDialog(WIFI_AND_MOBILE_SKIPPED_DIALOG_ID);
}
}
@@ -689,26 +699,6 @@ public class WifiSettings extends SettingsPreferenceFragment
return super.onCreateDialog(dialogId);
}
private boolean isPhone() {
final TelephonyManager telephonyManager = (TelephonyManager)this.getSystemService(
Context.TELEPHONY_SERVICE);
return telephonyManager != null
&& telephonyManager.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE;
}
/**
* Return true if there's any SIM related impediment to connectivity.
* Treats Unknown as OK. (Only returns true if we're sure of a SIM problem.)
*/
protected boolean hasSimProblem() {
final TelephonyManager telephonyManager = (TelephonyManager)this.getSystemService(
Context.TELEPHONY_SERVICE);
return telephonyManager != null
&& telephonyManager.getCurrentPhoneType() == TelephonyManager.PHONE_TYPE_GSM
&& telephonyManager.getSimState() != TelephonyManager.SIM_STATE_READY
&& telephonyManager.getSimState() != TelephonyManager.SIM_STATE_UNKNOWN;
}
/**
* Shows the latest access points available with supplimental information like
* the strength of network and the security for it.