summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java25
1 files changed, 24 insertions, 1 deletions
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 343b110d068c..5fed594d7207 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -24,6 +24,7 @@ import android.app.ActivityThread;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
+import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.BatteryStats;
import android.os.ResultReceiver;
@@ -183,6 +184,7 @@ public class TelephonyManager {
/**
* Returns the number of phones available.
+ * Returns 0 if none of voice, sms, data is not supported
* Returns 1 for Single standby mode (Single SIM functionality)
* Returns 2 for Dual standby mode.(Dual SIM functionality)
*/
@@ -190,7 +192,28 @@ public class TelephonyManager {
int phoneCount = 1;
switch (getMultiSimConfiguration()) {
case UNKNOWN:
- phoneCount = 1;
+ // if voice or sms or data is supported, return 1 otherwise 0
+ if (isVoiceCapable() || isSmsCapable()) {
+ phoneCount = 1;
+ } else {
+ // todo: try to clean this up further by getting rid of the nested conditions
+ if (mContext == null) {
+ phoneCount = 1;
+ } else {
+ // check for data support
+ ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(
+ Context.CONNECTIVITY_SERVICE);
+ if (cm == null) {
+ phoneCount = 1;
+ } else {
+ if (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) {
+ phoneCount = 1;
+ } else {
+ phoneCount = 0;
+ }
+ }
+ }
+ }
break;
case DSDS:
case DSDA: