Merge "Add createForPhoneAccountHandle() and getServicetate() Respect TelephonyManager's subId when listening to phone state"

am: 0a3b6b70dd

Change-Id: I512e68bccda115ad7c58ec1f1fbfbb2c69c86578
This commit is contained in:
Ta-wei Yen
2016-11-10 22:02:17 +00:00
committed by android-build-merger
5 changed files with 56 additions and 5 deletions

View File

@@ -37369,6 +37369,7 @@ package android.telephony {
public class TelephonyManager { public class TelephonyManager {
method public boolean canChangeDtmfToneLength(); method public boolean canChangeDtmfToneLength();
method public android.telephony.TelephonyManager createForPhoneAccountHandle(android.telecom.PhoneAccountHandle);
method public android.telephony.TelephonyManager createForSubscriptionId(int); method public android.telephony.TelephonyManager createForSubscriptionId(int);
method public java.util.List<android.telephony.CellInfo> getAllCellInfo(); method public java.util.List<android.telephony.CellInfo> getAllCellInfo();
method public int getCallState(); method public int getCallState();
@@ -37391,6 +37392,7 @@ package android.telephony {
method public int getNetworkType(); method public int getNetworkType();
method public int getPhoneCount(); method public int getPhoneCount();
method public int getPhoneType(); method public int getPhoneType();
method public android.telephony.ServiceState getServiceState();
method public java.lang.String getSimCountryIso(); method public java.lang.String getSimCountryIso();
method public java.lang.String getSimOperator(); method public java.lang.String getSimOperator();
method public java.lang.String getSimOperatorName(); method public java.lang.String getSimOperatorName();

View File

@@ -40482,6 +40482,7 @@ package android.telephony {
method public boolean canChangeDtmfToneLength(); method public boolean canChangeDtmfToneLength();
method public int checkCarrierPrivilegesForPackage(java.lang.String); method public int checkCarrierPrivilegesForPackage(java.lang.String);
method public int checkCarrierPrivilegesForPackageAnyPhone(java.lang.String); method public int checkCarrierPrivilegesForPackageAnyPhone(java.lang.String);
method public android.telephony.TelephonyManager createForPhoneAccountHandle(android.telecom.PhoneAccountHandle);
method public android.telephony.TelephonyManager createForSubscriptionId(int); method public android.telephony.TelephonyManager createForSubscriptionId(int);
method public void dial(java.lang.String); method public void dial(java.lang.String);
method public boolean disableDataConnectivity(); method public boolean disableDataConnectivity();
@@ -40519,6 +40520,7 @@ package android.telephony {
method public int getNetworkType(); method public int getNetworkType();
method public int getPhoneCount(); method public int getPhoneCount();
method public int getPhoneType(); method public int getPhoneType();
method public android.telephony.ServiceState getServiceState();
method public java.lang.String getSimCountryIso(); method public java.lang.String getSimCountryIso();
method public java.lang.String getSimOperator(); method public java.lang.String getSimOperator();
method public java.lang.String getSimOperatorName(); method public java.lang.String getSimOperatorName();

View File

@@ -37451,6 +37451,7 @@ package android.telephony {
public class TelephonyManager { public class TelephonyManager {
method public boolean canChangeDtmfToneLength(); method public boolean canChangeDtmfToneLength();
method public android.telephony.TelephonyManager createForPhoneAccountHandle(android.telecom.PhoneAccountHandle);
method public android.telephony.TelephonyManager createForSubscriptionId(int); method public android.telephony.TelephonyManager createForSubscriptionId(int);
method public java.util.List<android.telephony.CellInfo> getAllCellInfo(); method public java.util.List<android.telephony.CellInfo> getAllCellInfo();
method public int getCallState(); method public int getCallState();
@@ -37473,6 +37474,7 @@ package android.telephony {
method public int getNetworkType(); method public int getNetworkType();
method public int getPhoneCount(); method public int getPhoneCount();
method public int getPhoneType(); method public int getPhoneType();
method public android.telephony.ServiceState getServiceState();
method public java.lang.String getSimCountryIso(); method public java.lang.String getSimCountryIso();
method public java.lang.String getSimOperator(); method public java.lang.String getSimOperator();
method public java.lang.String getSimOperatorName(); method public java.lang.String getSimOperatorName();

View File

@@ -233,7 +233,7 @@ public class PhoneStateListener {
* @hide * @hide
*/ */
/** @hide */ /** @hide */
protected int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; protected Integer mSubId;
private final Handler mHandler; private final Handler mHandler;
@@ -242,7 +242,7 @@ public class PhoneStateListener {
* This class requires Looper.myLooper() not return null. * This class requires Looper.myLooper() not return null.
*/ */
public PhoneStateListener() { public PhoneStateListener() {
this(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, Looper.myLooper()); this(null, Looper.myLooper());
} }
/** /**
@@ -251,7 +251,7 @@ public class PhoneStateListener {
* @hide * @hide
*/ */
public PhoneStateListener(Looper looper) { public PhoneStateListener(Looper looper) {
this(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, looper); this(null, looper);
} }
/** /**
@@ -260,7 +260,7 @@ public class PhoneStateListener {
* own non-null Looper use PhoneStateListener(int subId, Looper looper) below. * own non-null Looper use PhoneStateListener(int subId, Looper looper) below.
* @hide * @hide
*/ */
public PhoneStateListener(int subId) { public PhoneStateListener(Integer subId) {
this(subId, Looper.myLooper()); this(subId, Looper.myLooper());
} }
@@ -269,7 +269,7 @@ public class PhoneStateListener {
* and non-null Looper. * and non-null Looper.
* @hide * @hide
*/ */
public PhoneStateListener(int subId, Looper looper) { public PhoneStateListener(Integer subId, Looper looper) {
if (DBG) log("ctor: subId=" + subId + " looper=" + looper); if (DBG) log("ctor: subId=" + subId + " looper=" + looper);
mSubId = subId; mSubId = subId;
mHandler = new Handler(looper) { mHandler = new Handler(looper) {

View File

@@ -258,6 +258,22 @@ public class TelephonyManager {
return new TelephonyManager(mContext, subId); return new TelephonyManager(mContext, subId);
} }
/**
* Create a new TelephonyManager object pinned to the subscription ID associated with the given
* phone account.
*
* @return a TelephonyManager that uses the given phone account for all calls, or {@code null}
* if the phone account does not correspond to a valid subscription ID.
*/
@Nullable
public TelephonyManager createForPhoneAccountHandle(PhoneAccountHandle phoneAccountHandle) {
int subId = getSubIdForPhoneAccountHandle(phoneAccountHandle);
if (!SubscriptionManager.isValidSubscriptionId(subId)) {
return null;
}
return new TelephonyManager(mContext, subId);
}
/** {@hide} */ /** {@hide} */
public boolean isMultiSimEnabled() { public boolean isMultiSimEnabled() {
return (multiSimConfig.equals("dsds") || multiSimConfig.equals("dsda") || return (multiSimConfig.equals("dsds") || multiSimConfig.equals("dsda") ||
@@ -2991,6 +3007,12 @@ public class TelephonyManager {
if (mContext == null) return; if (mContext == null) return;
try { try {
Boolean notifyNow = (getITelephony() != null); Boolean notifyNow = (getITelephony() != null);
// If the listener has not explicitly set the subId (for example, created with the
// default constructor), replace the subId so it will listen to the account the
// telephony manager is created with.
if (listener.mSubId == null) {
listener.mSubId = mSubId;
}
sRegistry.listenForSubscriber(listener.mSubId, getOpPackageName(), sRegistry.listenForSubscriber(listener.mSubId, getOpPackageName(),
listener.callback, events, notifyNow); listener.callback, events, notifyNow);
} catch (RemoteException ex) { } catch (RemoteException ex) {
@@ -5354,6 +5376,19 @@ public class TelephonyManager {
return retval; return retval;
} }
private int getSubIdForPhoneAccountHandle(PhoneAccountHandle phoneAccountHandle) {
int retval = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
try {
ITelecomService service = getTelecomService();
if (service != null) {
retval = getSubIdForPhoneAccount(service.getPhoneAccount(phoneAccountHandle));
}
} catch (RemoteException e) {
}
return retval;
}
/** /**
* Resets telephony manager settings back to factory defaults. * Resets telephony manager settings back to factory defaults.
* *
@@ -5402,6 +5437,16 @@ public class TelephonyManager {
result.send(0, null); result.send(0, null);
} }
/**
* Returns the current {@link ServiceState} information.
*
* <p>Requires Permission:
* {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
*/
public ServiceState getServiceState() {
return getServiceStateForSubscriber(getSubId());
}
/** /**
* Returns the service state information on specified subscription. Callers require * Returns the service state information on specified subscription. Callers require
* either READ_PRIVILEGED_PHONE_STATE or READ_PHONE_STATE to retrieve the information. * either READ_PRIVILEGED_PHONE_STATE or READ_PHONE_STATE to retrieve the information.