我正在使用 Java 运行时支持将 Android 应用程序移植到 BlackBerry 10 OS。我的应用程序目前在 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 始终为空。
需要明确的是,这段代码在 Android 设备上运行良好,并且经过了很好的测试。
同样相关:BB10 设备报告我的应用程序具有 GPS 位置权限,但没有常规位置权限,即使我的清单仅请求 COARSE_LOCATION。可能有关系?
更新:
我有一张 BlackBerry Support 的未结票。他们说“这是一个已知问题,正在通过内部开发解决。”