Android - ошибка GsmCellLocation и getCid () - PullRequest
0 голосов
/ 16 октября 2011

Я пытаюсь получить значения cellId и Lac, но все равно получаю сообщение об ошибке "неожиданно остановлен".

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    GsmCellLocation loc = (GsmCellLocation) tm.getCellLocation();

    TextView text = (TextView) findViewById(R.id.text);

    text.setText(loc.getCid());
}

Это очень простая программа, и я нашел ее много раз в этом виде, но она не работает ни в эмуляторе (в эмуляторах у меня 2.3.3 и 3.0), ни в телефоне (планшет 3.0)

Разрешения, которые я пробовал в манифесте:

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

Спасибо за ответ, Джирка

Ответы [ 2 ]

0 голосов
/ 25 февраля 2013

Если вы все еще ищете ответ на этот вопрос, проблема в том, что loc.getCid () возвращает целое число, тогда как text.setText требует String. Просто измените последнюю строку на:

text.setText(Integer.toString(loc.getCid()));

Я только что попробовал это, и он отлично работает.

Еще один момент, хотя я не уверен в этом (и мне было бы любопытно услышать опыт других): вы, похоже, предполагаете, что вы используете это на телефоне GSM. Что если tm.getCellLocation() вернет CdmaCellLocation? Поскольку для класса CdmaCellLocation нет метода get.Cid(), я думаю, что безопаснее заключить ваш код в оператор if, например: if(tm.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM). Вы также можете получить отдельный результат для if(tm.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA), используя один из доступных методов .

0 голосов
/ 05 ноября 2011

Вы включили использование беспроводных сетей для локализации в настройках?На андроиде 2.3.4 это можно сделать настройками-> местоположение-> использовать беспроводную сеть.Включить это.Теперь ваш код должен работать!

...