#java #android
#java #Android
Вопрос:
Я хочу получить текущую информацию о ячейке, используемую для передачи данных. До Android Q я мог легко получить его через getallcellinfo(). Однако, начиная с Android Q, об этом будет сообщаться через onCellInfoChanged().
Мне не нужно прослушивать измененную информацию о ячейке, мне просто нужна информация о ячейке в момент вызова метода. Я не могу просто вернуть ((CellInfoLte) cellInfo).getCellIdentity().getEarfcn();
внутри PhoneStateListener. Как это реализовать?
public int getEarfcn() {
telephonyManager.listen(new PhoneStateListener() {
@Override
public void onCellInfoChanged(List<CellInfo> cellInfoList) {
super.onCellInfoChanged(cellInfoList);
for (CellInfo cellInfo : cellInfoList) {
if (cellInfo instanceof CellInfoLte) {
int earfcn = ((CellInfoLte) cellInfo).getCellIdentity().getEarfcn();
// How to return this "earfcn" once I get it?
}
}
}
}, PhoneStateListener.LISTEN_CALL_STATE);
return CellInfo.UNAVAILABLE;
}
Комментарии:
1. Я думаю, что это проблема XY xyproblem.info потому что вы можете получить значение внутри вашего объекта с помощью переменной внутри основного класса, а после проверить, равна ли эта переменная нулю или имеет какое-то значение!
Ответ №1:
Вы не можете использовать return. Создайте такой же интерфейс
public voi getEarfcn(ICellInfoChanged cellInfoChangedCallback) {
telephonyManager.listen(new PhoneStateListener() {
@Override
public void onCellInfoChanged(List<CellInfo> cellInfoList) {
super.onCellInfoChanged(cellInfoList);
for (CellInfo cellInfo : cellInfoList) {
if (cellInfo instanceof CellInfoLte) {
int earfcn = ((CellInfoLte) cellInfo).getCellIdentity().getEarfcn();
cellInfoChangedCallback.onCallback(cellInfo);
}
}
}
}, PhoneStateListener.LISTEN_CALL_STATE);
}
Комментарии:
1. Не удается разрешить метод ‘getEarfcn’ в ‘CellIdentityLte’? любое предложение!