Add setNtnSmsSupported API in SatelliteManager.
Bug: 378145870
Test: make
Test: Manually tested SMS/MMS/CALLS/DATA
FLAG: com.android.internal.telephony.flags.carrier_roaming_nb_iot_ntn
Change-Id: Id9d683c012bede6c6b3aa3109959b0cbbe79c563
diff --git a/telephony/java/android/telephony/satellite/SatelliteManager.java b/telephony/java/android/telephony/satellite/SatelliteManager.java
index 88dddcf..2d6e98a 100644
--- a/telephony/java/android/telephony/satellite/SatelliteManager.java
+++ b/telephony/java/android/telephony/satellite/SatelliteManager.java
@@ -3431,6 +3431,40 @@
}
}
+ /**
+ * Inform whether application supports NTN SMS in satellite mode.
+ *
+ * This method is used by default messaging application to inform framework whether it supports
+ * NTN SMS or not.
+ *
+ * Invoking this API will internally result in triggering
+ * {@link android.telephony.TelephonyCallback.CarrierRoamingNtnModeListener
+ * #onCarrierRoamingNtnAvailableServicesChanged(List)} and
+ * {@link android.telephony.TelephonyCallback.CarrierRoamingNtnModeListener
+ * #onCarrierRoamingNtnEligibleStateChanged(boolean)} callbacks.
+ *
+ * @param ntnSmsSupported {@code true} If application supports NTN SMS, else {@code false}.
+ *
+ * @throws SecurityException if the caller doesn't have required permission.
+ * @throws IllegalStateException if the Telephony process is not currently available.
+ * @hide
+ */
+ @RequiresPermission(allOf = {Manifest.permission.SATELLITE_COMMUNICATION,
+ Manifest.permission.SEND_SMS})
+ public void setNtnSmsSupported(boolean ntnSmsSupported) {
+ try {
+ ITelephony telephony = getITelephony();
+ if (telephony != null) {
+ telephony.setNtnSmsSupported(ntnSmsSupported);
+ } else {
+ throw new IllegalStateException("telephony service is null.");
+ }
+ } catch (RemoteException ex) {
+ loge("setNtnSmsSupported() RemoteException:" + ex);
+ ex.rethrowAsRuntimeException();
+ }
+ }
+
@Nullable
private static ITelephony getITelephony() {
ITelephony binder = ITelephony.Stub.asInterface(TelephonyFrameworkInitializer
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index 544bfab..efe159a 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -3487,4 +3487,15 @@
@JavaPassthrough(annotation="@android.annotation.RequiresPermission("
+ "android.Manifest.permission.SATELLITE_COMMUNICATION)")
void deprovisionSatellite(in List<SatelliteSubscriberInfo> list, in ResultReceiver result);
+
+ /**
+ * Inform whether application supports NTN SMS in satellite mode.
+ *
+ * This method is used by default messaging application to inform framework whether it supports
+ * NTN SMS or not.
+ *
+ * @param ntnSmsSupported {@code true} If application supports NTN SMS, else {@code false}.
+ * @hide
+ */
+ void setNtnSmsSupported(boolean ntnSmsSupported);
}