Added getMaxCharPerTextMessage() API.

Bug: 260896985
Test: atest CtsTelephonyTestCases
Change-Id: Icf0045c15fb0ec0914699545367df0dc864fc5a7
This commit is contained in:
Aishwarya Mallampati
2023-01-24 18:55:54 +00:00
parent 258a4eef90
commit 49bffb80f2
2 changed files with 60 additions and 5 deletions

View File

@@ -25,19 +25,23 @@ import android.annotation.RequiresFeature;
import android.annotation.RequiresPermission;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Binder;
import android.os.RemoteException;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyFrameworkInitializer;
import android.util.ArrayMap;
import com.android.internal.telephony.IIntegerConsumer;
import com.android.internal.telephony.ITelephony;
import com.android.telephony.Rlog;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
/**
* Manages satellite operations such as provisioning, pointing, messaging, location sharing, etc.
@@ -116,9 +120,9 @@ public class SatelliteManager {
*/
public static final int SATELLITE_SERVICE_SERVER_ERROR = 2;
/**
* Internal error received from the satellite service
* Unexpected telephony internal error.
*/
public static final int SATELLITE_SERVICE_INTERNAL_ERROR = 3;
public static final int SATELLITE_SERVICE_TELEPHONY_INTERNAL_ERROR = 3;
/**
* Modem error received from the satellite service.
*/
@@ -176,12 +180,17 @@ public class SatelliteManager {
*/
public static final int SATELLITE_SERVICE_ERROR = 17;
/**
* Satellite service is disabled on the requested subscription.
*/
public static final int SATELLITE_SERVICE_DISABLED = 18;
/** @hide */
@IntDef(prefix = {"SATELLITE_SERVICE_"}, value = {
SATELLITE_SERVICE_SUCCESS,
SATELLITE_SERVICE_SERVER_NOT_REACHABLE,
SATELLITE_SERVICE_SERVER_ERROR,
SATELLITE_SERVICE_INTERNAL_ERROR,
SATELLITE_SERVICE_TELEPHONY_INTERNAL_ERROR,
SATELLITE_SERVICE_MODEM_ERROR,
SATELLITE_SERVICE_SYSTEM_ERROR,
SATELLITE_SERVICE_INVALID_ARGUMENTS,
@@ -195,7 +204,8 @@ public class SatelliteManager {
SATELLITE_SERVICE_NO_RESOURCES,
SATELLITE_SERVICE_REQUEST_FAILED,
SATELLITE_SERVICE_INVALID_SUBSCRIPTION_ID,
SATELLITE_SERVICE_ERROR
SATELLITE_SERVICE_ERROR,
SATELLITE_SERVICE_DISABLED
})
@Retention(RetentionPolicy.SOURCE)
public @interface SatelliteServiceResult {}
@@ -345,6 +355,46 @@ public class SatelliteManager {
return SATELLITE_SERVICE_REQUEST_FAILED;
}
/**
* Get maximum number of characters per text message on satellite.
* @param executor - The executor on which the result listener will be called.
* @param resultListener - Listener that will be called when the operation is successful.
* If this method returns {@link #SATELLITE_SERVICE_SUCCESS}, listener
* will be called with maximum characters limit.
*
* @throws SecurityException if the caller doesn't have required permission.
*
* @return The result of the operation
*/
@RequiresPermission(Manifest.permission.SATELLITE_COMMUNICATION)
@SatelliteServiceResult
public int getMaxCharactersPerSatelliteTextMessage(@NonNull @CallbackExecutor Executor executor,
@NonNull Consumer<Integer> resultListener) {
Objects.requireNonNull(executor);
Objects.requireNonNull(resultListener);
try {
ITelephony telephony = getITelephony();
if (telephony != null) {
IIntegerConsumer internalCallback = new IIntegerConsumer.Stub() {
@Override
public void accept(int result) {
executor.execute(() -> Binder.withCleanCallingIdentity(
() -> resultListener.accept(result)));
}
};
return telephony.getMaxCharactersPerSatelliteTextMessage(mSubId, internalCallback);
} else {
throw new IllegalStateException("telephony service is null.");
}
} catch (RemoteException ex) {
loge("getMaxCharactersPerSatelliteTextMessage() RemoteException:" + ex);
ex.rethrowFromSystemServer();
}
return SATELLITE_SERVICE_REQUEST_FAILED;
}
private static ITelephony getITelephony() {
ITelephony binder = ITelephony.Stub.asInterface(TelephonyFrameworkInitializer
.getTelephonyServiceManager()

View File

@@ -2709,4 +2709,9 @@ interface ITelephony {
* Stop receiving satellite pointing updates.
*/
int stopSatellitePositionUpdates(int subId, int callbackId);
}
/**
* Get maximum number of characters per text message on satellite.
*/
int getMaxCharactersPerSatelliteTextMessage(int subId, IIntegerConsumer internalCallback);
}