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 は常に null です。
明確にするために、このコードは Android デバイスで正常に動作し、十分にテストされています。
また関連: BB10 デバイスは、マニフェストが COARSE_LOCATION のみを要求しているにもかかわらず、アプリに GPS 位置情報のアクセス許可があるが、通常の位置情報のアクセス許可がないことを報告します。関係あるかも?
アップデート:
BlackBerry サポートのオープン チケットを持っています。彼らは、「これは既知の問題であり、内部開発で修正中です」と言っています。