From d243d23f84b5db83e07f94c4d149650707bfbc20 Mon Sep 17 00:00:00 2001 From: Steven Moreland Date: Thu, 24 Sep 2020 00:46:56 +0000 Subject: [PATCH] ServiceManager: add getDeclaredInstances Corresponding to change in IServiceManager API, for finding out what instances of a VINTF service are installed. Bug: 168715768 Test: manual Change-Id: Ic54b0cfd1bd42e45dc66858dbd614db7ba22083f --- core/java/android/os/ServiceManager.java | 15 +++++++++++++++ core/java/android/os/ServiceManagerNative.java | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/core/java/android/os/ServiceManager.java b/core/java/android/os/ServiceManager.java index b654707a683b2..35e7bad83736a 100644 --- a/core/java/android/os/ServiceManager.java +++ b/core/java/android/os/ServiceManager.java @@ -234,6 +234,21 @@ public final class ServiceManager { } } + /** + * Returns the list of declared instances for an interface. + * + * @return true if the service is declared somewhere (eg. VINTF manifest) and + * waitForService should always be able to return the service. + */ + public static String[] getDeclaredInstances(@NonNull String iface) { + try { + return getIServiceManager().getDeclaredInstances(iface); + } catch (RemoteException e) { + Log.e(TAG, "error in getDeclaredInstances", e); + return null; + } + } + /** * Returns the specified service from the service manager. * diff --git a/core/java/android/os/ServiceManagerNative.java b/core/java/android/os/ServiceManagerNative.java index 91b56fbbc38e0..b70b6b5d209e4 100644 --- a/core/java/android/os/ServiceManagerNative.java +++ b/core/java/android/os/ServiceManagerNative.java @@ -90,6 +90,10 @@ class ServiceManagerProxy implements IServiceManager { return mServiceManager.isDeclared(name); } + public String[] getDeclaredInstances(String iface) throws RemoteException { + return mServiceManager.getDeclaredInstances(iface); + } + public void registerClientCallback(String name, IBinder service, IClientCallback cb) throws RemoteException { throw new RemoteException();