Нулевая проблема с NeighboringCellInfo, CID и LAC
Некоторое время я пытался получить CellID и LAC рядом с базовыми станциями. К сожалению, мне не удалось это сделать. Первым вариантом было использовать:
GsmCellLocation xXx = new GsmCellLocation();
CID = xXx.getCid();
LAC = xXx.getLac();
Toast output = Toast.makeText(getApplicationContext(), "Base station LAC is "+LAC+"\n"
+"Base station CID is " +CID, Toast.LENGTH_SHORT);
output.show();
Но в этом случае я получаю значение -1 (как я понимаю, это означает, что это не GSM, но когда я проверяю с помощью isGSM, он показывает «true»). Еще один способ я нашел серфинг в сети (я немного обновил его)
public void GetID(){
List<NeighboringCellInfo> neighCell = null;
TelephonyManager telManager = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);
neighCell = telManager.getNeighboringCellInfo();
for (int i = 0; i < neighCell.size(); i++) {
try {
NeighboringCellInfo thisCell = neighCell.get(i);
int thisNeighCID = thisCell.getCid();
int thisNeighRSSI = thisCell.getRssi();
log(" "+thisNeighCID+" - "+thisNeighRSSI);
} catch (NumberFormatException e) {
e.printStackTrace();
NeighboringCellInfo thisCell = neighCell.get(i);
log(neighCell.toString());
}
}
}
Но в этом случае приложение просто падает сразу после нажатия кнопки «Выполнить». Затмение не показывает ошибок. Может быть, у кого-то есть идеи, как исправить мои проблемы?
Logcat говорит: 10-05 22: 53: 27.923: ОШИБКА / dalvikvm (231): невозможно открыть файл трассировки стека '/data/anr/traces.txt': отказано в разрешении
Используемые разрешения:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
Может быть проблема в том, что я забыл включить:
TelephonyManager telManager = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);
Обновить. Я включил строку сверху, сбой исчез, но теперь после нажатия кнопки ничего не происходит. Обновлен исходный код.