diff --git a/telecomm/java/android/telecom/ConnectionService.java b/telecomm/java/android/telecom/ConnectionService.java index 49b34b38c663b..c66e92b5e0998 100644 --- a/telecomm/java/android/telecom/ConnectionService.java +++ b/telecomm/java/android/telecom/ConnectionService.java @@ -1937,6 +1937,8 @@ public abstract class ConnectionService extends Service { return; } + String callingPackage = getOpPackageName(); + mAdapter.queryRemoteConnectionServices(new RemoteServiceCallback.Stub() { @Override public void onResult( @@ -1965,7 +1967,7 @@ public abstract class ConnectionService extends Service { } }.prepare()); } - }); + }, callingPackage); } /** diff --git a/telecomm/java/android/telecom/ConnectionServiceAdapter.java b/telecomm/java/android/telecom/ConnectionServiceAdapter.java index 6c3f4f34ff2db..3acd83a41396d 100644 --- a/telecomm/java/android/telecom/ConnectionServiceAdapter.java +++ b/telecomm/java/android/telecom/ConnectionServiceAdapter.java @@ -316,11 +316,11 @@ final class ConnectionServiceAdapter implements DeathRecipient { /** * Retrieves a list of remote connection services usable to place calls. */ - void queryRemoteConnectionServices(RemoteServiceCallback callback) { + void queryRemoteConnectionServices(RemoteServiceCallback callback, String callingPackage) { // Only supported when there is only one adapter. if (mAdapters.size() == 1) { try { - mAdapters.iterator().next().queryRemoteConnectionServices(callback, + mAdapters.iterator().next().queryRemoteConnectionServices(callback, callingPackage, Log.getExternalSession()); } catch (RemoteException e) { Log.e(this, e, "Exception trying to query for remote CSs"); diff --git a/telecomm/java/android/telecom/ConnectionServiceAdapterServant.java b/telecomm/java/android/telecom/ConnectionServiceAdapterServant.java index f99b218bd9b96..b28158913dc41 100644 --- a/telecomm/java/android/telecom/ConnectionServiceAdapterServant.java +++ b/telecomm/java/android/telecom/ConnectionServiceAdapterServant.java @@ -186,8 +186,13 @@ final class ConnectionServiceAdapterServant { break; } case MSG_QUERY_REMOTE_CALL_SERVICES: - mDelegate.queryRemoteConnectionServices((RemoteServiceCallback) msg.obj, - null /*Session.Info*/); + SomeArgs args2 = (SomeArgs) msg.obj; + try { + mDelegate.queryRemoteConnectionServices((RemoteServiceCallback) args2.arg1, + (String) args2.arg2, null /*Session.Info*/); + } finally { + args2.recycle(); + } break; case MSG_SET_VIDEO_STATE: mDelegate.setVideoState((String) msg.obj, msg.arg1, null /*Session.Info*/); @@ -468,7 +473,10 @@ final class ConnectionServiceAdapterServant { @Override public void queryRemoteConnectionServices(RemoteServiceCallback callback, - Session.Info sessionInfo) { + String callingPackage, Session.Info sessionInfo) { + SomeArgs args = SomeArgs.obtain(); + args.arg1 = callback; + args.arg2 = callingPackage; mHandler.obtainMessage(MSG_QUERY_REMOTE_CALL_SERVICES, callback).sendToTarget(); } diff --git a/telecomm/java/android/telecom/RemoteConnectionService.java b/telecomm/java/android/telecom/RemoteConnectionService.java index 744544eb01f17..1e73bd61d68e2 100644 --- a/telecomm/java/android/telecom/RemoteConnectionService.java +++ b/telecomm/java/android/telecom/RemoteConnectionService.java @@ -288,7 +288,7 @@ final class RemoteConnectionService { @Override public void queryRemoteConnectionServices(RemoteServiceCallback callback, - Session.Info sessionInfo) { + String callingPackage, Session.Info sessionInfo) { // Not supported from remote connection service. } diff --git a/telecomm/java/com/android/internal/telecom/IConnectionServiceAdapter.aidl b/telecomm/java/com/android/internal/telecom/IConnectionServiceAdapter.aidl index 76ac88e9fbaa6..9cf098c751774 100644 --- a/telecomm/java/com/android/internal/telecom/IConnectionServiceAdapter.aidl +++ b/telecomm/java/com/android/internal/telecom/IConnectionServiceAdapter.aidl @@ -78,7 +78,8 @@ oneway interface IConnectionServiceAdapter { void onPostDialChar(String callId, char nextChar, in Session.Info sessionInfo); - void queryRemoteConnectionServices(RemoteServiceCallback callback, in Session.Info sessionInfo); + void queryRemoteConnectionServices(RemoteServiceCallback callback, String callingPackage, + in Session.Info sessionInfo); void setVideoProvider(String callId, IVideoProvider videoProvider, in Session.Info sessionInfo);