Merge "Do not use hidden API ParcelableException"
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
|
||||
package android.telephony;
|
||||
|
||||
import android.os.ParcelableException;
|
||||
import android.telephony.CellInfo;
|
||||
|
||||
import java.util.List;
|
||||
@@ -28,5 +27,5 @@ import java.util.List;
|
||||
oneway interface ICellInfoCallback
|
||||
{
|
||||
void onCellInfo(in List<CellInfo> state);
|
||||
void onError(in int errorCode, in ParcelableException detail);
|
||||
void onError(in int errorCode, in String exceptionName, in String message);
|
||||
}
|
||||
|
||||
@@ -5570,18 +5570,20 @@ public class TelephonyManager {
|
||||
telephony.requestCellInfoUpdate(
|
||||
getSubId(),
|
||||
new ICellInfoCallback.Stub() {
|
||||
@Override
|
||||
public void onCellInfo(List<CellInfo> cellInfo) {
|
||||
Binder.withCleanCallingIdentity(() ->
|
||||
executor.execute(() -> callback.onCellInfo(cellInfo)));
|
||||
}
|
||||
|
||||
public void onError(int errorCode, android.os.ParcelableException detail) {
|
||||
@Override
|
||||
public void onError(int errorCode, String exceptionName, String message) {
|
||||
Binder.withCleanCallingIdentity(() ->
|
||||
executor.execute(() -> callback.onError(
|
||||
errorCode, detail.getCause())));
|
||||
errorCode,
|
||||
createThrowableByClassName(exceptionName, message))));
|
||||
}
|
||||
}, getOpPackageName());
|
||||
|
||||
} catch (RemoteException ex) {
|
||||
}
|
||||
}
|
||||
@@ -5610,21 +5612,36 @@ public class TelephonyManager {
|
||||
telephony.requestCellInfoUpdateWithWorkSource(
|
||||
getSubId(),
|
||||
new ICellInfoCallback.Stub() {
|
||||
@Override
|
||||
public void onCellInfo(List<CellInfo> cellInfo) {
|
||||
Binder.withCleanCallingIdentity(() ->
|
||||
executor.execute(() -> callback.onCellInfo(cellInfo)));
|
||||
}
|
||||
|
||||
public void onError(int errorCode, android.os.ParcelableException detail) {
|
||||
@Override
|
||||
public void onError(int errorCode, String exceptionName, String message) {
|
||||
Binder.withCleanCallingIdentity(() ->
|
||||
executor.execute(() -> callback.onError(
|
||||
errorCode, detail.getCause())));
|
||||
errorCode,
|
||||
createThrowableByClassName(exceptionName, message))));
|
||||
}
|
||||
}, getOpPackageName(), workSource);
|
||||
} catch (RemoteException ex) {
|
||||
}
|
||||
}
|
||||
|
||||
private static Throwable createThrowableByClassName(String className, String message) {
|
||||
if (className == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
Class<?> c = Class.forName(className);
|
||||
return (Throwable) c.getConstructor(String.class).newInstance(message);
|
||||
} catch (ReflectiveOperationException | ClassCastException e) {
|
||||
}
|
||||
return new RuntimeException(className + ": " + message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the minimum time in milli-seconds between {@link PhoneStateListener#onCellInfoChanged
|
||||
* PhoneStateListener.onCellInfoChanged} will be invoked.
|
||||
|
||||
Reference in New Issue
Block a user