From d314de0aa495e7a5e5d8a8754f2bdb1d09d45a21 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Mon, 22 Jun 2015 15:56:46 -0700 Subject: [PATCH] Return reasonable phone type if no sim inserted. With no sim, there's no subscription, no default phone, etc. If we're asked for phone type for an invalid sub, just use the first phone. bug: 20760370 Change-Id: Ide7b0679e7253e1f1ce563a68fbbec1ff8c24daf --- .../java/android/telephony/TelephonyManager.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index b7ca7499b64ce..cec11cfd17d19 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -944,10 +944,17 @@ public class TelephonyManager { /** {@hide} */ @SystemApi public int getCurrentPhoneType(int subId) { - int phoneId = SubscriptionManager.getPhoneId(subId); + int phoneId; + if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + // if we don't have any sims, we don't have subscriptions, but we + // still may want to know what type of phone we've got. + phoneId = 0; + } else { + phoneId = SubscriptionManager.getPhoneId(subId); + } try{ ITelephony telephony = getITelephony(); - if (telephony != null) { + if (telephony != null && subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { return telephony.getActivePhoneTypeForSubscriber(subId); } else { // This can happen when the ITelephony interface is not up yet.