Pipe TelephonyManager.getCallState through TelecommManager
* Add TelecommManager.getCallState (hidden API) * Make TelephonyManager.getCallState call through to TelecommManager, to be consistent with TelephonyManager.ACTION_PHONE_STATE_CHANGED broadcasts for overall call state. Telephony continues to manage call states for individual subscriptions. Bug: 17378767 Change-Id: Ia5e8b21df801ed3af4f6e14c110a72c92f077f88
This commit is contained in:
@@ -20,6 +20,7 @@ import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.internal.telecom.ITelecomService;
|
||||
@@ -661,11 +662,35 @@ public class TelecomManager {
|
||||
return getTelecomService().isInCall();
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "RemoteException attempting to get default phone app.", e);
|
||||
Log.e(TAG, "RemoteException calling isInCall().", e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns one of the following constants that represents the current state of Telecom:
|
||||
*
|
||||
* {@link TelephonyManager#CALL_STATE_RINGING}
|
||||
* {@link TelephonyManager#CALL_STATE_OFFHOOK}
|
||||
* {@link TelephonyManager#CALL_STATE_IDLE}
|
||||
*
|
||||
* <p>
|
||||
* Requires permission: {@link android.Manifest.permission#READ_PHONE_STATE}
|
||||
* </p>
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public int getCallState() {
|
||||
try {
|
||||
if (isServiceConnected()) {
|
||||
return getTelecomService().getCallState();
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.d(TAG, "RemoteException calling getCallState().", e);
|
||||
}
|
||||
return TelephonyManager.CALL_STATE_IDLE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether there currently exists is a ringing incoming-call.
|
||||
*
|
||||
|
||||
@@ -138,6 +138,11 @@ interface ITelecomService {
|
||||
*/
|
||||
boolean isRinging();
|
||||
|
||||
/**
|
||||
* @see TelecomServiceImpl#getCallState
|
||||
*/
|
||||
int getCallState();
|
||||
|
||||
/**
|
||||
* @see TelecomServiceImpl#endCall
|
||||
*/
|
||||
|
||||
@@ -2045,7 +2045,11 @@ public class TelephonyManager {
|
||||
* Returns a constant indicating the call state (cellular) on the device.
|
||||
*/
|
||||
public int getCallState() {
|
||||
return getCallState(getDefaultSubscription());
|
||||
try {
|
||||
return getTelecomService().getCallState();
|
||||
} catch (RemoteException | NullPointerException e) {
|
||||
return CALL_STATE_IDLE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2142,7 +2146,7 @@ public class TelephonyManager {
|
||||
return ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));
|
||||
}
|
||||
|
||||
private ITelecomService getTelecommService() {
|
||||
private ITelecomService getTelecomService() {
|
||||
return ITelecomService.Stub.asInterface(ServiceManager.getService(Context.TELECOM_SERVICE));
|
||||
}
|
||||
|
||||
@@ -3132,7 +3136,7 @@ public class TelephonyManager {
|
||||
@SystemApi
|
||||
public void silenceRinger() {
|
||||
try {
|
||||
getTelecommService().silenceRinger();
|
||||
getTelecomService().silenceRinger();
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Error calling ITelecomService#silenceRinger", e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user