Loading api/system-current.txt +8 −0 Original line number Diff line number Diff line Loading @@ -1371,6 +1371,14 @@ package android.bluetooth.le { } package android.companion { public final class CompanionDeviceManager { method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public boolean isDeviceAssociated(@NonNull String, @NonNull android.net.MacAddress, @NonNull android.os.UserHandle); } } package android.content { public class ContentProviderClient implements java.lang.AutoCloseable { Loading api/test-current.txt +8 −0 Original line number Diff line number Diff line Loading @@ -643,6 +643,14 @@ package android.bluetooth { } package android.companion { public final class CompanionDeviceManager { method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public boolean isDeviceAssociated(@NonNull String, @NonNull android.net.MacAddress, @NonNull android.os.UserHandle); } } package android.content { public final class AutofillOptions implements android.os.Parcelable { Loading core/java/android/companion/CompanionDeviceManager.java +37 −0 Original line number Diff line number Diff line Loading @@ -21,7 +21,10 @@ import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; import android.annotation.TestApi; import android.app.Activity; import android.app.Application; import android.app.PendingIntent; Loading @@ -29,9 +32,11 @@ import android.content.ComponentName; import android.content.Context; import android.content.IntentSender; import android.content.pm.PackageManager; import android.net.MacAddress; import android.os.Bundle; import android.os.Handler; import android.os.RemoteException; import android.os.UserHandle; import android.service.notification.NotificationListenerService; import android.util.Log; Loading Loading @@ -252,6 +257,38 @@ public final class CompanionDeviceManager { } } /** * Check if a given package was {@link #associate associated} with a device with given * mac address by given user. * * @param packageName the package to check for * @param macAddress the mac address or BSSID of the device to check for * @param user the user to check for * @return whether a corresponding association record exists * * @hide */ @SystemApi @TestApi @RequiresPermission(android.Manifest.permission.MANAGE_COMPANION_DEVICES) public boolean isDeviceAssociated( @NonNull String packageName, @NonNull MacAddress macAddress, @NonNull UserHandle user) { if (!checkFeaturePresent()) { return false; } checkNotNull(packageName, "package name cannot be null"); checkNotNull(macAddress, "mac address cannot be null"); checkNotNull(user, "user cannot be null"); try { return mService.isDeviceAssociated( packageName, macAddress.toString(), user.getIdentifier()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } private boolean checkFeaturePresent() { boolean featurePresent = mService != null; if (!featurePresent && DEBUG) { Loading core/java/android/companion/ICompanionDeviceManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -39,4 +39,6 @@ interface ICompanionDeviceManager { boolean hasNotificationAccess(in ComponentName component); PendingIntent requestNotificationAccess(in ComponentName component); boolean isDeviceAssociated(in String packageName, in String macAddress, int userId); } core/java/com/android/internal/util/CollectionUtils.java +40 −0 Original line number Diff line number Diff line Loading @@ -230,6 +230,15 @@ public class CollectionUtils { return find(items, predicate) != null; } /** * Returns whether there exists at least one element in the set for which * condition {@code predicate} is true */ public static <T> boolean any(@Nullable Set<T> items, java.util.function.Predicate<T> predicate) { return find(items, predicate) != null; } /** * Returns the first element from the list for which * condition {@code predicate} is true, or null if there is no such element Loading @@ -244,6 +253,37 @@ public class CollectionUtils { return null; } /** * Returns the first element from the set for which * condition {@code predicate} is true, or null if there is no such element */ public static @Nullable <T> T find(@Nullable Set<T> cur, java.util.function.Predicate<T> predicate) { if (cur == null || predicate == null) return null; int size = cur.size(); if (size == 0) return null; try { if (cur instanceof ArraySet) { ArraySet<T> arraySet = (ArraySet<T>) cur; for (int i = 0; i < size; i++) { T item = arraySet.valueAt(i); if (predicate.test(item)) { return item; } } } else { for (T t : cur) { if (predicate.test(t)) { return t; } } } } catch (Exception e) { throw ExceptionUtils.propagate(e); } return null; } /** * Similar to {@link List#add}, but with support for list values of {@code null} and * {@link Collections#emptyList} Loading Loading
api/system-current.txt +8 −0 Original line number Diff line number Diff line Loading @@ -1371,6 +1371,14 @@ package android.bluetooth.le { } package android.companion { public final class CompanionDeviceManager { method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public boolean isDeviceAssociated(@NonNull String, @NonNull android.net.MacAddress, @NonNull android.os.UserHandle); } } package android.content { public class ContentProviderClient implements java.lang.AutoCloseable { Loading
api/test-current.txt +8 −0 Original line number Diff line number Diff line Loading @@ -643,6 +643,14 @@ package android.bluetooth { } package android.companion { public final class CompanionDeviceManager { method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public boolean isDeviceAssociated(@NonNull String, @NonNull android.net.MacAddress, @NonNull android.os.UserHandle); } } package android.content { public final class AutofillOptions implements android.os.Parcelable { Loading
core/java/android/companion/CompanionDeviceManager.java +37 −0 Original line number Diff line number Diff line Loading @@ -21,7 +21,10 @@ import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; import android.annotation.TestApi; import android.app.Activity; import android.app.Application; import android.app.PendingIntent; Loading @@ -29,9 +32,11 @@ import android.content.ComponentName; import android.content.Context; import android.content.IntentSender; import android.content.pm.PackageManager; import android.net.MacAddress; import android.os.Bundle; import android.os.Handler; import android.os.RemoteException; import android.os.UserHandle; import android.service.notification.NotificationListenerService; import android.util.Log; Loading Loading @@ -252,6 +257,38 @@ public final class CompanionDeviceManager { } } /** * Check if a given package was {@link #associate associated} with a device with given * mac address by given user. * * @param packageName the package to check for * @param macAddress the mac address or BSSID of the device to check for * @param user the user to check for * @return whether a corresponding association record exists * * @hide */ @SystemApi @TestApi @RequiresPermission(android.Manifest.permission.MANAGE_COMPANION_DEVICES) public boolean isDeviceAssociated( @NonNull String packageName, @NonNull MacAddress macAddress, @NonNull UserHandle user) { if (!checkFeaturePresent()) { return false; } checkNotNull(packageName, "package name cannot be null"); checkNotNull(macAddress, "mac address cannot be null"); checkNotNull(user, "user cannot be null"); try { return mService.isDeviceAssociated( packageName, macAddress.toString(), user.getIdentifier()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } private boolean checkFeaturePresent() { boolean featurePresent = mService != null; if (!featurePresent && DEBUG) { Loading
core/java/android/companion/ICompanionDeviceManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -39,4 +39,6 @@ interface ICompanionDeviceManager { boolean hasNotificationAccess(in ComponentName component); PendingIntent requestNotificationAccess(in ComponentName component); boolean isDeviceAssociated(in String packageName, in String macAddress, int userId); }
core/java/com/android/internal/util/CollectionUtils.java +40 −0 Original line number Diff line number Diff line Loading @@ -230,6 +230,15 @@ public class CollectionUtils { return find(items, predicate) != null; } /** * Returns whether there exists at least one element in the set for which * condition {@code predicate} is true */ public static <T> boolean any(@Nullable Set<T> items, java.util.function.Predicate<T> predicate) { return find(items, predicate) != null; } /** * Returns the first element from the list for which * condition {@code predicate} is true, or null if there is no such element Loading @@ -244,6 +253,37 @@ public class CollectionUtils { return null; } /** * Returns the first element from the set for which * condition {@code predicate} is true, or null if there is no such element */ public static @Nullable <T> T find(@Nullable Set<T> cur, java.util.function.Predicate<T> predicate) { if (cur == null || predicate == null) return null; int size = cur.size(); if (size == 0) return null; try { if (cur instanceof ArraySet) { ArraySet<T> arraySet = (ArraySet<T>) cur; for (int i = 0; i < size; i++) { T item = arraySet.valueAt(i); if (predicate.test(item)) { return item; } } } else { for (T t : cur) { if (predicate.test(t)) { return t; } } } } catch (Exception e) { throw ExceptionUtils.propagate(e); } return null; } /** * Similar to {@link List#add}, but with support for list values of {@code null} and * {@link Collections#emptyList} Loading