Я переношу приложение Android на ОС BlackBerry 10, используя поддержку Java Runtime. В настоящее время мое приложение нормально работает на устройствах Android, но я не могу получать обновления местоположения с устройства BlackBerry.
Мой манифест запрашивает разрешение COARSE_LOCATION:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
В моем коде я запрашиваю обновления местоположения из Activity:
LocationListener listener = new LocationListener()
{
public void onLocationChanged(Location location)
{
Log.v(TAG, "onLocationChanged");
// Code to save returned location...
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
LocationManager lm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, listener);
Log.v(TAG, "Registered network location listeners");
Я вижу строку журнала «зарегистрированные слушатели», напечатанную с устройства, но я никогда не вижу, чтобы «onLocationChanged» регистрировался, и мой код, который сохраняет предоставленное местоположение, никогда не вызывается.
В другом месте я пытаюсь получить последнее известное местоположение:
LocationManager lm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
Location lastLocation = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
lastLocation всегда имеет значение null.
Чтобы было ясно, этот код отлично работает на устройствах Android и хорошо протестирован.
Также актуально: устройство BB10 сообщает, что у моего приложения есть разрешение на определение местоположения GPS, но не разрешение на обычное определение местоположения, хотя мой манифест запрашивает только COARSE_LOCATION. Может быть связано?
ОБНОВИТЬ:
У меня есть открытый тикет со службой поддержки BlackBerry. Они говорят: «Это известная проблема, она находится в процессе исправления с помощью внутренней разработки».