GCM 通知を受信したときに、Android でユーザーの位置を取得したいと考えています。
だから私の中で私GCMIntentService extends GCMBaseIntentService
はこれをやっています:
@Override
protected void onMessage(Context context, Intent intent) {
Log.i(TAG, "Received message. Extras: " + intent.getExtras());
String message = getString(R.string.gcm_message);
displayMessage(context, message);
syncLocations(context);
}
syncLocation では、場所を取得するために正しくやっています
public void syncLocations(Context context)
{
locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0,
mLocationListener);
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 1000, 0,
mLocationListener);
}
public LocationListener mLocationListener = new LocationListener() {
@Override
public void onStatusChanged(
String provider,
int status,
Bundle extras)
{}
@Override
public void onProviderEnabled(
String provider)
{}
@Override
public void onProviderDisabled(
String provider)
{}
@Override
public void onLocationChanged(
Location location)
{
//HANDLE LOCATION
}
};
アプリ内から呼び出された場合、syncLocation は正しく機能します。
しかし、通知onMessage()から呼び出すと、メソッドに入りますが、onLocationChangedは呼び出されません。文脈と関係があると思います。
なぜ機能しないのか、誰か情報を教えてください。
ありがとう