Merge "resolved conflicts for merge of c1edfc2c to master"
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 9ec7def..d5c7caa 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.PrivateApi;
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.content.Context;
@@ -25,6 +26,7 @@
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemProperties;
+import android.telephony.Rlog;
import android.util.Log;
import com.android.internal.telephony.IPhoneSubInfo;
@@ -64,8 +66,41 @@
private static final String TAG = "TelephonyManager";
private static ITelephonyRegistry sRegistry;
+
+ private final HashMap<CallStateListener,Listener> mListeners
+ = new HashMap<CallStateListener,Listener>();
private final Context mContext;
+ private static class Listener extends ITelephonyListener.Stub {
+ final CallStateListener mListener;
+ private static final int WHAT = 1;
+
+ private Handler mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ mListener.onCallStateChanged(msg.arg1, msg.arg2, (String)msg.obj);
+ }
+ };
+
+ Listener(CallStateListener listener) {
+ mListener = listener;
+ }
+
+ @Override
+ public void onUpdate(final int callId, final int state, final String number) {
+ if (mHandler != null) {
+ mHandler.sendMessage(mHandler.obtainMessage(WHAT, callId, state, number));
+ }
+ }
+
+ void clearQueue() {
+ mHandler.removeMessages(WHAT);
+
+ // Don't accept more incoming binder calls either.
+ mHandler = null;
+ }
+ }
+
/** @hide */
public TelephonyManager(Context context) {
Context appContext = context.getApplicationContext();
@@ -87,38 +122,6 @@
}
private static TelephonyManager sInstance = new TelephonyManager();
- private HashMap<CallStateListener, Listener> mListeners
- = new HashMap<CallStateListener, Listener>();
-
- private static class Listener extends ITelephonyListener.Stub {
- final CallStateListener mListener;
- private static final int WHAT = 1;
-
- private Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- mListener.onCallStateChanged(msg.arg1, msg.arg2, (String) msg.obj);
- }
- };
-
- Listener(CallStateListener listener) {
- mListener = listener;
- }
-
- @Override
- public void onUpdate(final int callId, final int state, final String number) {
- if (mHandler != null) {
- mHandler.sendMessage(mHandler.obtainMessage(WHAT, callId, state, number));
- }
- }
-
- void clearQueue() {
- mHandler.removeMessages(WHAT);
-
- // Don't accept more incoming binder calls either.
- mHandler = null;
- }
- }
/** @hide
/* @deprecated - use getSystemService as described above */
@@ -1920,439 +1923,369 @@
* Expose the rest of ITelephony to @PrivateApi
*/
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void dial(String number) {
try {
getITelephony().dial(number);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#dial");
+ Log.e(TAG, "Error calling ITelephony#dial", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void call(String callingPackage, String number) {
try {
getITelephony().call(callingPackage, number);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#call");
+ Log.e(TAG, "Error calling ITelephony#call", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean showCallScreen() {
try {
return getITelephony().showCallScreen();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#showCallScreen");
+ Log.e(TAG, "Error calling ITelephony#showCallScreen", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean showCallScreenWithDialpad(boolean showDialpad) {
try {
return getITelephony().showCallScreenWithDialpad(showDialpad);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#showCallScreenWithDialpad");
+ Log.e(TAG, "Error calling ITelephony#showCallScreenWithDialpad", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean endCall() {
try {
return getITelephony().endCall();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#endCall");
+ Log.e(TAG, "Error calling ITelephony#endCall", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void answerRingingCall() {
try {
getITelephony().answerRingingCall();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#answerRingingCall");
+ Log.e(TAG, "Error calling ITelephony#answerRingingCall", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void toggleHold() {
try {
getITelephony().toggleHold();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#toggleHold");
+ Log.e(TAG, "Error calling ITelephony#toggleHold", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void merge() {
try {
getITelephony().merge();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#merge");
+ Log.e(TAG, "Error calling ITelephony#merge", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void swap() {
try {
getITelephony().swap();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#swap");
+ Log.e(TAG, "Error calling ITelephony#swap", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void mute(boolean mute) {
try {
getITelephony().mute(mute);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#mute");
+ Log.e(TAG, "Error calling ITelephony#mute", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void silenceRinger() {
try {
getITelephony().silenceRinger();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#silenceRinger");
+ Log.e(TAG, "Error calling ITelephony#silenceRinger", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean isOffhook() {
try {
return getITelephony().isOffhook();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#isOffhook");
+ Log.e(TAG, "Error calling ITelephony#isOffhook", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean isRinging() {
try {
return getITelephony().isRinging();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#isRinging");
+ Log.e(TAG, "Error calling ITelephony#isRinging", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean isIdle() {
try {
return getITelephony().isIdle();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#isIdle");
+ Log.e(TAG, "Error calling ITelephony#isIdle", e);
}
return true;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean isRadioOn() {
try {
return getITelephony().isRadioOn();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#isRadioOn");
+ Log.e(TAG, "Error calling ITelephony#isRadioOn", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean isSimPinEnabled() {
try {
return getITelephony().isSimPinEnabled();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#isSimPinEnabled");
+ Log.e(TAG, "Error calling ITelephony#isSimPinEnabled", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void cancelMissedCallsNotification() {
try {
getITelephony().cancelMissedCallsNotification();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#cancelMissedCallsNotification");
+ Log.e(TAG, "Error calling ITelephony#cancelMissedCallsNotification", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean supplyPin(String pin) {
try {
return getITelephony().supplyPin(pin);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#supplyPin");
+ Log.e(TAG, "Error calling ITelephony#supplyPin", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean supplyPuk(String puk, String pin) {
try {
return getITelephony().supplyPuk(puk, pin);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#supplyPuk");
+ Log.e(TAG, "Error calling ITelephony#supplyPuk", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public int[] supplyPinReportResult(String pin) {
try {
return getITelephony().supplyPinReportResult(pin);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#supplyPinReportResult");
+ Log.e(TAG, "Error calling ITelephony#supplyPinReportResult", e);
}
return new int[0];
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public int[] supplyPukReportResult(String puk, String pin) {
try {
return getITelephony().supplyPukReportResult(puk, pin);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#]");
+ Log.e(TAG, "Error calling ITelephony#]", e);
}
return new int[0];
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean handlePinMmi(String dialString) {
try {
return getITelephony().handlePinMmi(dialString);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#handlePinMmi");
+ Log.e(TAG, "Error calling ITelephony#handlePinMmi", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void toggleRadioOnOff() {
try {
getITelephony().toggleRadioOnOff();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#toggleRadioOnOff");
+ Log.e(TAG, "Error calling ITelephony#toggleRadioOnOff", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean setRadio(boolean turnOn) {
try {
return getITelephony().setRadio(turnOn);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#setRadio");
+ Log.e(TAG, "Error calling ITelephony#setRadio", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean setRadioPower(boolean turnOn) {
try {
return getITelephony().setRadioPower(turnOn);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#setRadioPower");
+ Log.e(TAG, "Error calling ITelephony#setRadioPower", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void updateServiceLocation() {
try {
getITelephony().updateServiceLocation();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#updateServiceLocation");
+ Log.e(TAG, "Error calling ITelephony#updateServiceLocation", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public int enableApnType(String type) {
try {
return getITelephony().enableApnType(type);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#enableApnType");
+ Log.e(TAG, "Error calling ITelephony#enableApnType", e);
}
return PhoneConstants.APN_REQUEST_FAILED;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public int disableApnType(String type) {
try {
return getITelephony().disableApnType(type);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#disableApnType");
+ Log.e(TAG, "Error calling ITelephony#disableApnType", e);
}
return PhoneConstants.APN_REQUEST_FAILED;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean enableDataConnectivity() {
try {
return getITelephony().enableDataConnectivity();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#enableDataConnectivity");
+ Log.e(TAG, "Error calling ITelephony#enableDataConnectivity", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean disableDataConnectivity() {
try {
return getITelephony().disableDataConnectivity();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#disableDataConnectivity");
+ Log.e(TAG, "Error calling ITelephony#disableDataConnectivity", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean isDataConnectivityPossible() {
try {
return getITelephony().isDataConnectivityPossible();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#isDataConnectivityPossible");
+ Log.e(TAG, "Error calling ITelephony#isDataConnectivityPossible", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public boolean needsOtaServiceProvisioning() {
try {
return getITelephony().needsOtaServiceProvisioning();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#needsOtaServiceProvisioning");
+ Log.e(TAG, "Error calling ITelephony#needsOtaServiceProvisioning", e);
}
return false;
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void playDtmfTone(char digit, boolean timedShortCode) {
try {
getITelephony().playDtmfTone(digit, timedShortCode);
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#playDtmfTone");
+ Log.e(TAG, "Error calling ITelephony#playDtmfTone", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void stopDtmfTone() {
try {
getITelephony().stopDtmfTone();
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#stopDtmfTone");
+ Log.e(TAG, "Error calling ITelephony#stopDtmfTone", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void addCallStateListener(CallStateListener listener) {
try {
if (listener == null) {
@@ -2364,14 +2297,12 @@
getITelephony().addListener(l);
}
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#addListener");
+ Log.e(TAG, "Error calling ITelephony#addListener", e);
}
}
- /**
- * @hide
- * @PrivateApi
- */
+ /** @hide */
+ @PrivateApi
public void removeCallStateListener(CallStateListener listener) {
try {
final Listener l = mListeners.remove(listener);
@@ -2381,7 +2312,7 @@
getITelephony().removeListener(l);
}
} catch (RemoteException e) {
- Log.e(TAG, "Error calling ITelephony#removeListener");
+ Log.e(TAG, "Error calling ITelephony#removeListener", e);
}
}
}