Problema nulo com NeighbouringCellInfo, CID e LAC
Por um tempo, eu estava tentando obter o CellID e o LAC de estações base próximas. Infelizmente não consegui fazer isso. A primeira opção foi usar:
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();
Mas, neste caso, recebo o valor -1 (como eu entendo que significa que não é um GSM, mas quando eu verifico com isGSM, ele mostra "true"). Outra maneira que eu encontrei navegando na net (eu a atualizei um pouco)
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());
}
}
}
Mas, neste caso, o aplicativo trava logo após pressionar o botão executar. O Eclipse não mostra erros. Pode ser que alguém tenha alguma idéia de como resolver meus problemas?
Logcat diz: 10-05 22: 53: 27.923: ERRO / dalvikvm (231): Não é possível abrir o arquivo de rastreamento de pilha '/data/anr/traces.txt': permissão negada
Permissões usadas:
<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" />
Pode ser que o problema é que esqueci de incluir:
TelephonyManager telManager = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);
Atualizar. Eu incluí a linha de cima, a falha desapareceu, mas agora depois que eu pressiono o botão, nada acontece. Código fonte atualizado.