Restructure CarrierMessagingServiceWrapper with better interfaces.
- CarrierMessagingServiceWrapper is now a final class with only APIs of direct actions on messaging. - The original abstract parts of the class are now interfaces: interface CarrierMessagingServiceConnectionCallback and Runnable callback. - CarrierMessagingCallbackWrapper is renamed to CarrierMessagingCallback Bug: 172087216 Test: build and manual Change-Id: I1760623543b929a51ce26dc7dcc5f8ebe7fd9732
This commit is contained in:
@@ -46,12 +46,13 @@ import java.util.List;
|
|||||||
* CarrierMessagingService.
|
* CarrierMessagingService.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public abstract class CarrierMessagingServiceWrapper {
|
public final class CarrierMessagingServiceWrapper {
|
||||||
// Populated by bindToCarrierMessagingService. bindToCarrierMessagingService must complete
|
// Populated by bindToCarrierMessagingService. bindToCarrierMessagingService must complete
|
||||||
// prior to calling disposeConnection so that mCarrierMessagingServiceConnection is initialized.
|
// prior to calling disposeConnection so that mCarrierMessagingServiceConnection is initialized.
|
||||||
private volatile CarrierMessagingServiceConnection mCarrierMessagingServiceConnection;
|
private volatile CarrierMessagingServiceConnection mCarrierMessagingServiceConnection;
|
||||||
|
|
||||||
private volatile ICarrierMessagingService mICarrierMessagingService;
|
private volatile ICarrierMessagingService mICarrierMessagingService;
|
||||||
|
private Runnable mOnServiceReadyCallback;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Binds to the carrier messaging service under package {@code carrierPackageName}. This method
|
* Binds to the carrier messaging service under package {@code carrierPackageName}. This method
|
||||||
@@ -63,12 +64,14 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public boolean bindToCarrierMessagingService(@NonNull Context context,
|
public boolean bindToCarrierMessagingService(@NonNull Context context,
|
||||||
@NonNull String carrierPackageName) {
|
@NonNull String carrierPackageName,
|
||||||
|
@NonNull Runnable onServiceReadyCallback) {
|
||||||
Preconditions.checkState(mCarrierMessagingServiceConnection == null);
|
Preconditions.checkState(mCarrierMessagingServiceConnection == null);
|
||||||
|
|
||||||
Intent intent = new Intent(CarrierMessagingService.SERVICE_INTERFACE);
|
Intent intent = new Intent(CarrierMessagingService.SERVICE_INTERFACE);
|
||||||
intent.setPackage(carrierPackageName);
|
intent.setPackage(carrierPackageName);
|
||||||
mCarrierMessagingServiceConnection = new CarrierMessagingServiceConnection();
|
mCarrierMessagingServiceConnection = new CarrierMessagingServiceConnection();
|
||||||
|
mOnServiceReadyCallback = onServiceReadyCallback;
|
||||||
return context.bindService(intent, mCarrierMessagingServiceConnection,
|
return context.bindService(intent, mCarrierMessagingServiceConnection,
|
||||||
Context.BIND_AUTO_CREATE);
|
Context.BIND_AUTO_CREATE);
|
||||||
}
|
}
|
||||||
@@ -83,14 +86,9 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
Preconditions.checkNotNull(mCarrierMessagingServiceConnection);
|
Preconditions.checkNotNull(mCarrierMessagingServiceConnection);
|
||||||
context.unbindService(mCarrierMessagingServiceConnection);
|
context.unbindService(mCarrierMessagingServiceConnection);
|
||||||
mCarrierMessagingServiceConnection = null;
|
mCarrierMessagingServiceConnection = null;
|
||||||
|
mOnServiceReadyCallback = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Implemented by subclasses to use the carrier messaging service once it is ready.
|
|
||||||
* @hide
|
|
||||||
*/
|
|
||||||
public abstract void onServiceReady();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when connection with service is established.
|
* Called when connection with service is established.
|
||||||
*
|
*
|
||||||
@@ -98,7 +96,7 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
*/
|
*/
|
||||||
private void onServiceReady(ICarrierMessagingService carrierMessagingService) {
|
private void onServiceReady(ICarrierMessagingService carrierMessagingService) {
|
||||||
mICarrierMessagingService = carrierMessagingService;
|
mICarrierMessagingService = carrierMessagingService;
|
||||||
onServiceReady();
|
if (mOnServiceReadyCallback != null) mOnServiceReadyCallback.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -113,11 +111,11 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public void filterSms(@NonNull MessagePdu pdu, @NonNull String format, int destPort,
|
public void filterSms(@NonNull MessagePdu pdu, @NonNull String format, int destPort,
|
||||||
int subId, @NonNull final CarrierMessagingCallbackWrapper callback) {
|
int subId, @NonNull final CarrierMessagingCallback callback) {
|
||||||
if (mICarrierMessagingService != null) {
|
if (mICarrierMessagingService != null) {
|
||||||
try {
|
try {
|
||||||
mICarrierMessagingService.filterSms(pdu, format, destPort, subId,
|
mICarrierMessagingService.filterSms(pdu, format, destPort, subId,
|
||||||
new CarrierMessagingCallbackWrapperInternal(callback));
|
new CarrierMessagingCallbackInternal(callback));
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
@@ -137,11 +135,11 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public void sendTextSms(@NonNull String text, int subId, @NonNull String destAddress,
|
public void sendTextSms(@NonNull String text, int subId, @NonNull String destAddress,
|
||||||
int sendSmsFlag, @NonNull final CarrierMessagingCallbackWrapper callback) {
|
int sendSmsFlag, @NonNull final CarrierMessagingCallback callback) {
|
||||||
if (mICarrierMessagingService != null) {
|
if (mICarrierMessagingService != null) {
|
||||||
try {
|
try {
|
||||||
mICarrierMessagingService.sendTextSms(text, subId, destAddress, sendSmsFlag,
|
mICarrierMessagingService.sendTextSms(text, subId, destAddress, sendSmsFlag,
|
||||||
new CarrierMessagingCallbackWrapperInternal(callback));
|
new CarrierMessagingCallbackInternal(callback));
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
@@ -163,11 +161,11 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
*/
|
*/
|
||||||
public void sendDataSms(@NonNull byte[] data, int subId, @NonNull String destAddress,
|
public void sendDataSms(@NonNull byte[] data, int subId, @NonNull String destAddress,
|
||||||
int destPort, int sendSmsFlag,
|
int destPort, int sendSmsFlag,
|
||||||
@NonNull final CarrierMessagingCallbackWrapper callback) {
|
@NonNull final CarrierMessagingCallback callback) {
|
||||||
if (mICarrierMessagingService != null) {
|
if (mICarrierMessagingService != null) {
|
||||||
try {
|
try {
|
||||||
mICarrierMessagingService.sendDataSms(data, subId, destAddress, destPort,
|
mICarrierMessagingService.sendDataSms(data, subId, destAddress, destPort,
|
||||||
sendSmsFlag, new CarrierMessagingCallbackWrapperInternal(callback));
|
sendSmsFlag, new CarrierMessagingCallbackInternal(callback));
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
@@ -188,11 +186,11 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
*/
|
*/
|
||||||
public void sendMultipartTextSms(@NonNull List<String> parts, int subId,
|
public void sendMultipartTextSms(@NonNull List<String> parts, int subId,
|
||||||
@NonNull String destAddress, int sendSmsFlag,
|
@NonNull String destAddress, int sendSmsFlag,
|
||||||
@NonNull final CarrierMessagingCallbackWrapper callback) {
|
@NonNull final CarrierMessagingCallback callback) {
|
||||||
if (mICarrierMessagingService != null) {
|
if (mICarrierMessagingService != null) {
|
||||||
try {
|
try {
|
||||||
mICarrierMessagingService.sendMultipartTextSms(parts, subId, destAddress,
|
mICarrierMessagingService.sendMultipartTextSms(parts, subId, destAddress,
|
||||||
sendSmsFlag, new CarrierMessagingCallbackWrapperInternal(callback));
|
sendSmsFlag, new CarrierMessagingCallbackInternal(callback));
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
@@ -212,11 +210,11 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public void sendMms(@NonNull Uri pduUri, int subId, @NonNull Uri location,
|
public void sendMms(@NonNull Uri pduUri, int subId, @NonNull Uri location,
|
||||||
@NonNull final CarrierMessagingCallbackWrapper callback) {
|
@NonNull final CarrierMessagingCallback callback) {
|
||||||
if (mICarrierMessagingService != null) {
|
if (mICarrierMessagingService != null) {
|
||||||
try {
|
try {
|
||||||
mICarrierMessagingService.sendMms(pduUri, subId, location,
|
mICarrierMessagingService.sendMms(pduUri, subId, location,
|
||||||
new CarrierMessagingCallbackWrapperInternal(callback));
|
new CarrierMessagingCallbackInternal(callback));
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
@@ -235,11 +233,11 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public void downloadMms(@NonNull Uri pduUri, int subId, @NonNull Uri location,
|
public void downloadMms(@NonNull Uri pduUri, int subId, @NonNull Uri location,
|
||||||
@NonNull final CarrierMessagingCallbackWrapper callback) {
|
@NonNull final CarrierMessagingCallback callback) {
|
||||||
if (mICarrierMessagingService != null) {
|
if (mICarrierMessagingService != null) {
|
||||||
try {
|
try {
|
||||||
mICarrierMessagingService.downloadMms(pduUri, subId, location,
|
mICarrierMessagingService.downloadMms(pduUri, subId, location,
|
||||||
new CarrierMessagingCallbackWrapperInternal(callback));
|
new CarrierMessagingCallbackInternal(callback));
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
@@ -265,7 +263,7 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
* {@link CarrierMessagingServiceWrapper}.
|
* {@link CarrierMessagingServiceWrapper}.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public abstract static class CarrierMessagingCallbackWrapper {
|
public interface CarrierMessagingCallback {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Response callback for {@link CarrierMessagingServiceWrapper#filterSms}.
|
* Response callback for {@link CarrierMessagingServiceWrapper#filterSms}.
|
||||||
@@ -277,7 +275,7 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
* {@see CarrierMessagingService#onReceiveTextSms}.
|
* {@see CarrierMessagingService#onReceiveTextSms}.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public void onFilterComplete(int result) {
|
default void onFilterComplete(int result) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -291,7 +289,7 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
* only if result is {@link CarrierMessagingService#SEND_STATUS_OK}.
|
* only if result is {@link CarrierMessagingService#SEND_STATUS_OK}.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public void onSendSmsComplete(int result, int messageRef) {
|
default void onSendSmsComplete(int result, int messageRef) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -305,7 +303,7 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
* {@link CarrierMessagingService#SEND_STATUS_OK}.
|
* {@link CarrierMessagingService#SEND_STATUS_OK}.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public void onSendMultipartSmsComplete(int result, @Nullable int[] messageRefs) {
|
default void onSendMultipartSmsComplete(int result, @Nullable int[] messageRefs) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -319,7 +317,7 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
* {@link CarrierMessagingService#SEND_STATUS_OK}.
|
* {@link CarrierMessagingService#SEND_STATUS_OK}.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public void onSendMmsComplete(int result, @Nullable byte[] sendConfPdu) {
|
default void onSendMmsComplete(int result, @Nullable byte[] sendConfPdu) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,43 +328,43 @@ public abstract class CarrierMessagingServiceWrapper {
|
|||||||
* and {@link CarrierMessagingService#SEND_STATUS_ERROR}.
|
* and {@link CarrierMessagingService#SEND_STATUS_ERROR}.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public void onDownloadMmsComplete(int result) {
|
default void onDownloadMmsComplete(int result) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final class CarrierMessagingCallbackWrapperInternal
|
private final class CarrierMessagingCallbackInternal
|
||||||
extends ICarrierMessagingCallback.Stub {
|
extends ICarrierMessagingCallback.Stub {
|
||||||
CarrierMessagingCallbackWrapper mCarrierMessagingCallbackWrapper;
|
CarrierMessagingCallback mCarrierMessagingCallback;
|
||||||
|
|
||||||
CarrierMessagingCallbackWrapperInternal(CarrierMessagingCallbackWrapper callback) {
|
CarrierMessagingCallbackInternal(CarrierMessagingCallback callback) {
|
||||||
mCarrierMessagingCallbackWrapper = callback;
|
mCarrierMessagingCallback = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFilterComplete(int result) throws RemoteException {
|
public void onFilterComplete(int result) throws RemoteException {
|
||||||
mCarrierMessagingCallbackWrapper.onFilterComplete(result);
|
mCarrierMessagingCallback.onFilterComplete(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSendSmsComplete(int result, int messageRef) throws RemoteException {
|
public void onSendSmsComplete(int result, int messageRef) throws RemoteException {
|
||||||
mCarrierMessagingCallbackWrapper.onSendSmsComplete(result, messageRef);
|
mCarrierMessagingCallback.onSendSmsComplete(result, messageRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSendMultipartSmsComplete(int result, int[] messageRefs)
|
public void onSendMultipartSmsComplete(int result, int[] messageRefs)
|
||||||
throws RemoteException {
|
throws RemoteException {
|
||||||
mCarrierMessagingCallbackWrapper.onSendMultipartSmsComplete(result, messageRefs);
|
mCarrierMessagingCallback.onSendMultipartSmsComplete(result, messageRefs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSendMmsComplete(int result, byte[] sendConfPdu) throws RemoteException {
|
public void onSendMmsComplete(int result, byte[] sendConfPdu) throws RemoteException {
|
||||||
mCarrierMessagingCallbackWrapper.onSendMmsComplete(result, sendConfPdu);
|
mCarrierMessagingCallback.onSendMmsComplete(result, sendConfPdu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDownloadMmsComplete(int result) throws RemoteException {
|
public void onDownloadMmsComplete(int result) throws RemoteException {
|
||||||
mCarrierMessagingCallbackWrapper.onDownloadMmsComplete(result);
|
mCarrierMessagingCallback.onDownloadMmsComplete(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user