Add back getFastPairScanEnabled and setFastPairScanEnabled System API
Test: -m
Ignore-AOSP-First: nearby_not_in_aosp_yet
Change-Id: Ic0af4c235db14dfd8601c4cf75690af78d4821fd
diff --git a/framework-t/api/system-current.txt b/framework-t/api/system-current.txt
index 4bae8f4..cbe725f 100644
--- a/framework-t/api/system-current.txt
+++ b/framework-t/api/system-current.txt
@@ -261,6 +261,8 @@
}
public class NearbyManager {
+ method public static boolean isFastPairScanEnabled(@NonNull android.content.Context);
+ method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static void setFastPairScanEnabled(@NonNull android.content.Context, boolean);
method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void startBroadcast(@NonNull android.nearby.BroadcastRequest, @NonNull java.util.concurrent.Executor, @NonNull android.nearby.BroadcastCallback);
method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int startScan(@NonNull android.nearby.ScanRequest, @NonNull java.util.concurrent.Executor, @NonNull android.nearby.ScanCallback);
method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void stopBroadcast(@NonNull android.nearby.BroadcastCallback);
diff --git a/nearby/framework/java/android/nearby/NearbyManager.java b/nearby/framework/java/android/nearby/NearbyManager.java
index 68d2151..6299a4c 100644
--- a/nearby/framework/java/android/nearby/NearbyManager.java
+++ b/nearby/framework/java/android/nearby/NearbyManager.java
@@ -269,25 +269,27 @@
/**
* Read from {@link Settings} whether Fast Pair scan is enabled.
*
- * @param context the {@link Context} to query the setting
- * @return whether the Fast Pair is enabled
- * @hide
+ * @param context either activity or application context for caller to query the setting
+ * @return whether the Fast Pair scan is enabled
+ * @throws NullPointerException if {@code context} is {@code null}
*/
- public static boolean getFastPairScanEnabled(@NonNull Context context) {
+ public static boolean isFastPairScanEnabled(@NonNull Context context) {
+ Objects.requireNonNull(context);
final int enabled = Settings.Secure.getInt(
context.getContentResolver(), FAST_PAIR_SCAN_ENABLED, 0);
return enabled != 0;
}
/**
- * Write into {@link Settings} whether Fast Pair scan is enabled
+ * Write into {@link Settings} whether Fast Pair scan is enabled.
*
- * @param context the {@link Context} to set the setting
+ * @param context either activity or application context, for caller to set the setting
* @param enable whether the Fast Pair scan should be enabled
- * @hide
+ * @throws NullPointerException if {@code context} is {@code null}
*/
@RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS)
public static void setFastPairScanEnabled(@NonNull Context context, boolean enable) {
+ Objects.requireNonNull(context);
Settings.Secure.putInt(
context.getContentResolver(), FAST_PAIR_SCAN_ENABLED, enable ? 1 : 0);
}
diff --git a/nearby/service/java/com/android/server/nearby/fastpair/FastPairManager.java b/nearby/service/java/com/android/server/nearby/fastpair/FastPairManager.java
index e3de4e2..ca236da 100644
--- a/nearby/service/java/com/android/server/nearby/fastpair/FastPairManager.java
+++ b/nearby/service/java/com/android/server/nearby/fastpair/FastPairManager.java
@@ -157,7 +157,7 @@
Locator.getFromContextWrapper(mLocatorContextWrapper, FastPairCacheManager.class);
// Default false for now.
- mScanEnabled = NearbyManager.getFastPairScanEnabled(mLocatorContextWrapper.getContext());
+ mScanEnabled = NearbyManager.isFastPairScanEnabled(mLocatorContextWrapper.getContext());
registerFastPairScanChangeContentObserver(mLocatorContextWrapper.getContentResolver());
}
@@ -354,12 +354,15 @@
}
private void registerFastPairScanChangeContentObserver(ContentResolver resolver) {
+ if (mFastPairScanChangeContentObserver != null) {
+ unregisterFastPairScanChangeContentObserver(resolver);
+ }
mFastPairScanChangeContentObserver = new ContentObserver(ForegroundThread.getHandler()) {
@Override
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange, uri);
setScanEnabled(
- NearbyManager.getFastPairScanEnabled(mLocatorContextWrapper.getContext()));
+ NearbyManager.isFastPairScanEnabled(mLocatorContextWrapper.getContext()));
}
};
try {
@@ -372,6 +375,15 @@
}
}
+ private void unregisterFastPairScanChangeContentObserver(ContentResolver resolver) {
+ try {
+ resolver.unregisterContentObserver(mFastPairScanChangeContentObserver);
+ mFastPairScanChangeContentObserver = null;
+ } catch (SecurityException | NullPointerException | IllegalArgumentException e) {
+ Log.w(TAG, "Failed to unregister FastPairScanChange content observer.", e);
+ }
+ }
+
/**
* Processed task in a background thread
*/
diff --git a/nearby/tests/cts/fastpair/src/android/nearby/cts/NearbyManagerTest.java b/nearby/tests/cts/fastpair/src/android/nearby/cts/NearbyManagerTest.java
index 462d05a..718c8ad 100644
--- a/nearby/tests/cts/fastpair/src/android/nearby/cts/NearbyManagerTest.java
+++ b/nearby/tests/cts/fastpair/src/android/nearby/cts/NearbyManagerTest.java
@@ -162,9 +162,9 @@
@SdkSuppress(minSdkVersion = 32, codeName = "T")
public void setFastPairScanEnabled() {
mNearbyManager.setFastPairScanEnabled(mContext, true);
- assertThat(mNearbyManager.getFastPairScanEnabled(mContext)).isTrue();
+ assertThat(mNearbyManager.isFastPairScanEnabled(mContext)).isTrue();
mNearbyManager.setFastPairScanEnabled(mContext, false);
- assertThat(mNearbyManager.getFastPairScanEnabled(mContext)).isFalse();
+ assertThat(mNearbyManager.isFastPairScanEnabled(mContext)).isFalse();
}
private void enableBluetooth() {