Merge "Fixing few TelephonyManager calls to work when there is no SIM." into nyc-dev

This commit is contained in:
Shishir Agrawal
2016-04-13 00:59:09 +00:00
committed by Android (Google) Code Review
2 changed files with 61 additions and 26 deletions

View File

@@ -717,16 +717,11 @@ public class TelephonyManager {
*/
/** {@hide} */
public String getDeviceSoftwareVersion(int slotId) {
// FIXME methods taking slot id should not use subscription, instead us Uicc directly
int[] subId = SubscriptionManager.getSubId(slotId);
if (subId == null || subId.length == 0) {
return null;
}
ITelephony telephony = getITelephony();
if (telephony == null) return null;
try {
IPhoneSubInfo info = getSubscriberInfo();
if (info == null)
return null;
return info.getDeviceSvnUsingSubId(subId[0], mContext.getOpPackageName());
return telephony.getDeviceSoftwareVersionForSlot(slotId, getOpPackageName());
} catch (RemoteException ex) {
return null;
} catch (NullPointerException ex) {
@@ -798,12 +793,11 @@ public class TelephonyManager {
*/
/** {@hide} */
public String getImei(int slotId) {
int[] subId = SubscriptionManager.getSubId(slotId);
ITelephony telephony = getITelephony();
if (telephony == null) return null;
try {
IPhoneSubInfo info = getSubscriberInfo();
if (info == null)
return null;
return info.getImeiForSubscriber(subId[0], mContext.getOpPackageName());
return telephony.getImeiForSlot(slotId, getOpPackageName());
} catch (RemoteException ex) {
return null;
} catch (NullPointerException ex) {
@@ -1014,22 +1008,32 @@ public class TelephonyManager {
} else {
phoneId = SubscriptionManager.getPhoneId(subId);
}
return getCurrentPhoneTypeForSlot(phoneId);
}
/**
* See getCurrentPhoneType.
*
* @hide
*/
public int getCurrentPhoneTypeForSlot(int slotId) {
try{
ITelephony telephony = getITelephony();
if (telephony != null && subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
return telephony.getActivePhoneTypeForSubscriber(subId);
if (telephony != null) {
return telephony.getActivePhoneTypeForSlot(slotId);
} else {
// This can happen when the ITelephony interface is not up yet.
return getPhoneTypeFromProperty(phoneId);
return getPhoneTypeFromProperty(slotId);
}
} catch (RemoteException ex) {
// This shouldn't happen in the normal case, as a backup we
// read from the system property.
return getPhoneTypeFromProperty(phoneId);
return getPhoneTypeFromProperty(slotId);
} catch (NullPointerException ex) {
// This shouldn't happen in the normal case, as a backup we
// read from the system property.
return getPhoneTypeFromProperty(phoneId);
return getPhoneTypeFromProperty(slotId);
}
}
@@ -2555,20 +2559,31 @@ public class TelephonyManager {
* @param subId whose call state is returned
*/
public int getCallState(int subId) {
int phoneId = SubscriptionManager.getPhoneId(subId);
return getCallStateForSlot(phoneId);
}
/**
* See getCallState.
*
* @hide
*/
public int getCallStateForSlot(int slotId) {
try {
ITelephony telephony = getITelephony();
if (telephony == null)
return CALL_STATE_IDLE;
return telephony.getCallStateForSubscriber(subId);
return telephony.getCallStateForSlot(slotId);
} catch (RemoteException ex) {
// the phone process is restarting.
return CALL_STATE_IDLE;
} catch (NullPointerException ex) {
// the phone process is restarting.
return CALL_STATE_IDLE;
}
}
}
/** Data connection activity: No traffic. */
public static final int DATA_ACTIVITY_NONE = 0x00000000;
/** Data connection activity: Currently receiving IP PPP traffic. */

View File

@@ -360,9 +360,9 @@ interface ITelephony {
int getCallState();
/**
* Returns the call state for a subId.
* Returns the call state for a slot.
*/
int getCallStateForSubscriber(int subId);
int getCallStateForSlot(int slotId);
int getDataActivity();
int getDataState();
@@ -375,12 +375,12 @@ interface ITelephony {
int getActivePhoneType();
/**
* Returns the current active phone type as integer for particular subId.
* Returns the current active phone type as integer for particular slot.
* Returns TelephonyManager.PHONE_TYPE_CDMA if RILConstants.CDMA_PHONE
* and TelephonyManager.PHONE_TYPE_GSM if RILConstants.GSM_PHONE
* @param subId user preferred subId.
* @param slotId - slot to query.
*/
int getActivePhoneTypeForSubscriber(int subId);
int getActivePhoneTypeForSlot(int slotId);
/**
* Returns the CDMA ERI icon index to display
@@ -991,6 +991,26 @@ interface ITelephony {
*/
String getDeviceId(String callingPackage);
/**
* Returns the IMEI for the given slot.
*
* @param slotId - device slot.
* @param callingPackage The package making the call.
* <p>Requires Permission:
* {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
*/
String getImeiForSlot(int slotId, String callingPackage);
/**
* Returns the device software version.
*
* @param slotId - device slot.
* @param callingPackage The package making the call.
* <p>Requires Permission:
* {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
*/
String getDeviceSoftwareVersionForSlot(int slotId, String callingPackage);
/**
* Returns the subscription ID associated with the specified PhoneAccount.
*/