Merge changes from topic "cellinfocallback-error" am: 360e25280c

am: ed0c722aad

Change-Id: I835826b8197bea1e87491a8c18fc938d64c20f8d
This commit is contained in:
Nathan Harold
2019-01-14 11:30:24 -08:00
committed by android-build-merger
3 changed files with 55 additions and 4 deletions

View File

@@ -43169,6 +43169,9 @@ package android.telephony {
public static abstract class TelephonyManager.CellInfoCallback {
ctor public TelephonyManager.CellInfoCallback();
method public abstract void onCellInfo(java.util.List<android.telephony.CellInfo>);
method public void onError(int, java.lang.Throwable);
field public static final int ERROR_MODEM_ERROR = 2; // 0x2
field public static final int ERROR_TIMEOUT = 1; // 0x1
}
public static abstract class TelephonyManager.UssdResponseCallback {

View File

@@ -16,6 +16,7 @@
package android.telephony;
import android.os.ParcelableException;
import android.telephony.CellInfo;
import java.util.List;
@@ -27,4 +28,5 @@ import java.util.List;
oneway interface ICellInfoCallback
{
void onCellInfo(in List<CellInfo> state);
void onError(in int errorCode, in ParcelableException detail);
}

View File

@@ -4871,19 +4871,53 @@ public class TelephonyManager {
/** Callback for providing asynchronous {@link CellInfo} on request */
public abstract static class CellInfoCallback {
/**
* Response to
* Success response to
* {@link android.telephony.TelephonyManager#requestCellInfoUpdate requestCellInfoUpdate()}.
*
* <p>Invoked when there is a response to
* Invoked when there is a response to
* {@link android.telephony.TelephonyManager#requestCellInfoUpdate requestCellInfoUpdate()}
* to provide a list of {@link CellInfo}. If no {@link CellInfo} is available then an empty
* list will be provided. If an error occurs, null will be provided.
* list will be provided. If an error occurs, null will be provided unless the onError
* callback is overridden.
*
* @param cellInfo a list of {@link CellInfo}, an empty list, or null.
*
* {@see android.telephony.TelephonyManager#getAllCellInfo getAllCellInfo()}
*/
public abstract void onCellInfo(List<CellInfo> cellInfo);
public abstract void onCellInfo(@NonNull List<CellInfo> cellInfo);
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef(prefix = {"ERROR_"}, value = {ERROR_TIMEOUT, ERROR_MODEM_ERROR})
public @interface CellInfoCallbackError {}
/**
* The system timed out waiting for a response from the Radio.
*/
public static final int ERROR_TIMEOUT = 1;
/**
* The modem returned a failure.
*/
public static final int ERROR_MODEM_ERROR = 2;
/**
* Error response to
* {@link android.telephony.TelephonyManager#requestCellInfoUpdate requestCellInfoUpdate()}.
*
* Invoked when an error condition prevents updated {@link CellInfo} from being fetched
* and returned from the modem. Callers of requestCellInfoUpdate() should override this
* function to receive detailed status information in the event of an error. By default,
* this function will invoke onCellInfo() with null.
*
* @param errorCode an error code indicating the type of failure.
* @param detail a Throwable object with additional detail regarding the failure if
* available, otherwise null.
*/
public void onError(@CellInfoCallbackError int errorCode, @Nullable Throwable detail) {
// By default, simply invoke the success callback with an empty list.
onCellInfo(new ArrayList<CellInfo>());
}
};
/**
@@ -4910,6 +4944,12 @@ public class TelephonyManager {
Binder.withCleanCallingIdentity(() ->
executor.execute(() -> callback.onCellInfo(cellInfo)));
}
public void onError(int errorCode, android.os.ParcelableException detail) {
Binder.withCleanCallingIdentity(() ->
executor.execute(() -> callback.onError(
errorCode, detail.getCause())));
}
}, getOpPackageName());
} catch (RemoteException ex) {
@@ -4944,6 +4984,12 @@ public class TelephonyManager {
Binder.withCleanCallingIdentity(() ->
executor.execute(() -> callback.onCellInfo(cellInfo)));
}
public void onError(int errorCode, android.os.ParcelableException detail) {
Binder.withCleanCallingIdentity(() ->
executor.execute(() -> callback.onError(
errorCode, detail.getCause())));
}
}, getOpPackageName(), workSource);
} catch (RemoteException ex) {
}