Expose SatelliteManager as public manager class
This change exposes SatelliteManager as an @SystemService, with instance
retrieved with Context.getSystemService and Context.SATELLITE_SERVICE.
New public APIs will be provided for applications with permision to
monitor and query the enabled state for satellite modem.
Bug: 357638490
Test: FrameworksTelephonyTests SatelliteManagerTest SatelliteManagerTestOnMockService
Flag: com.android.internal.telephony.flags.satellite_state_change_listener
Change-Id: I3194c245f41fa24d16d0ea0a71166dc918e50a2a
diff --git a/core/api/current.txt b/core/api/current.txt
index 1f5b8cb..053ba18 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -10941,6 +10941,7 @@
field public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; // 0x1
field public static final String RESTRICTIONS_SERVICE = "restrictions";
field public static final String ROLE_SERVICE = "role";
+ field @FlaggedApi("com.android.internal.telephony.flags.satellite_state_change_listener") public static final String SATELLITE_SERVICE = "satellite";
field public static final String SEARCH_SERVICE = "search";
field @FlaggedApi("android.os.security_state_service") public static final String SECURITY_STATE_SERVICE = "security_state";
field public static final String SENSOR_SERVICE = "sensor";
@@ -47768,6 +47769,13 @@
}
+package android.telephony.satellite {
+
+ @FlaggedApi("com.android.internal.telephony.flags.satellite_state_change_listener") public final class SatelliteManager {
+ }
+
+}
+
package android.text {
@Deprecated public class AlteredCharSequence implements java.lang.CharSequence android.text.GetChars {
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 7ba5a4b..5453c2e 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -18195,7 +18195,7 @@
method @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") public void onSatelliteDatagramReceived(long, @NonNull android.telephony.satellite.SatelliteDatagram, int, @NonNull java.util.function.Consumer<java.lang.Void>);
}
- public final class SatelliteManager {
+ @FlaggedApi("com.android.internal.telephony.flags.satellite_state_change_listener") public final class SatelliteManager {
method @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void addAttachRestrictionForCarrier(int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @FlaggedApi("com.android.internal.telephony.flags.oem_enabled_satellite_flag") @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void deprovisionService(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @FlaggedApi("com.android.internal.telephony.flags.carrier_enabled_satellite_flag") @NonNull @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public java.util.Set<java.lang.Integer> getAttachRestrictionReasonsForCarrier(int);
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 5893da3..b22caf7 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -6654,8 +6654,8 @@
*
* @see #getSystemService(String)
* @see android.telephony.satellite.SatelliteManager
- * @hide
*/
+ @FlaggedApi(com.android.internal.telephony.flags.Flags.FLAG_SATELLITE_STATE_CHANGE_LISTENER)
public static final String SATELLITE_SERVICE = "satellite";
/**
diff --git a/telephony/java/android/telephony/satellite/SatelliteManager.java b/telephony/java/android/telephony/satellite/SatelliteManager.java
index e332d0f..915ad2c 100644
--- a/telephony/java/android/telephony/satellite/SatelliteManager.java
+++ b/telephony/java/android/telephony/satellite/SatelliteManager.java
@@ -26,6 +26,7 @@
import android.annotation.RequiresFeature;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
+import android.annotation.SystemService;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Binder;
@@ -61,13 +62,19 @@
import java.util.stream.Collectors;
/**
- * Manages satellite operations such as provisioning, pointing, messaging, location sharing, etc.
- * To get the object, call {@link Context#getSystemService(String)}.
+ * Manages satellite states such as monitoring enabled state and operations such as provisioning,
+ * pointing, messaging, location sharing, etc.
*
- * @hide
+ * <p>To get the object, call {@link Context#getSystemService(String)} with
+ * {@link Context#SATELLITE_SERVICE}.
+ *
+ * <p>SatelliteManager is intended for use on devices with feature
+ * {@link PackageManager#FEATURE_TELEPHONY_SATELLITE}. On devices without the feature, the behavior
+ * is not reliable.
*/
+@SystemService(Context.SATELLITE_SERVICE)
+@FlaggedApi(Flags.FLAG_SATELLITE_STATE_CHANGE_LISTENER)
@RequiresFeature(PackageManager.FEATURE_TELEPHONY_SATELLITE)
-@SystemApi
public final class SatelliteManager {
private static final String TAG = "SatelliteManager";