Blackberry MapView не работает на устройстве, а на симуляторе - PullRequest
0 голосов
/ 08 августа 2011

Я работаю над приложением BlackBerry, которое использует MapView.На данный момент я только показываю MapView, ничего больше.Это фрагмент кода, который я использую для него:

public class MapScreen extends MainScreen {
  private MapField map;

  public MapScreen() {
    super(MainScreen.NO_VERTICAL_SCROLL);

    map = new MapField();
    map.moveTo(new Coordinates(50.847573,4.713135, 0));
    add(map);

    //...
  }

  //...
}

Я использую net.rim.device.api.lbs.MapField, потому что я должен быть совместим с ОС 5.0

На симуляторе все хорошо иработает.Но как только я развернул его на устройстве, я увидел белый экран ...

Устройство подключено к Интернету, но только через Wi-Fi.Сначала я думал, что это проблема, но согласно «Службам Blackberry, которые доступны через соединения Wi-Fi» , это не должно быть проблемой.

Итак, кто-нибудьзнаете, почему он не работает на устройстве, и как я могу это решить?Спасибо

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Вы говорите, что «устройство имеет подключение к Интернету, но только через Wi-Fi», что заставляет меня поверить, что у вас нет реального устройства, снабженного тарифным планом BlackBerry. Вам нужен этот план для доступа к любым услугам BlackBerry, даже через Wi-Fi.

Для проверки правильности подключения вы можете использовать:

if (CoverageInfo.isCoverageSufficient(CoverageInfo.COVERAGE_BIS_B) {
   // Connection will support BlackBerry services
} else if (CoverageInfo.isCoverageSufficient(CoverageInfo.COVERAGE_MDS) {
   // Connection will support BlackBerry services if BES allows the connection to BIS servers.
}
1 голос
/ 20 мая 2012

Лучший способ проверить это - проверить записи ServiceBook для LBSConfig или его вариантов.

Это позволяет устройствам, которые больше не включены в план, но когда-то были настроены одним с LBS, для правильной работы.

private static final boolean have_lbs() {
    ServiceBook sb = ServiceBook.getSB();
    ServiceRecord[] records = sb.getRecords();
    int count = records.length;
    for (int ii = 0; ii < count; ++ii) {
        if (records[ii].getCid().toUpperCase().startsWith("LBS"))
            return true;
    }
    return false;
}
...