在位置请求pendingIntent中包含数据

时间:2015-08-12 07:59:43

标签: android android-intent

我正在使用PendingIntent请求一系列位置更新,并设置BroadcastReceiver来处理位置更新。以下是PendingIntent示例:

    Intent locationIntent = new Intent(context, LocationReceiver.class);
    locationIntent.putExtra("foo", "bar");
    pendingIntent = PendingIntent.getBroadcast(context, 0, locationIntent, PendingIntent.FLAG_CANCEL_CURRENT);

以下是请求位置更新的代码:

    final LocationRequest request = LocationRequest.create();
    request.setInterval(UPDATE_INTERVAL);
    request.setExpirationDuration(WAKEUP_DELTA * 2);
    request.setNumUpdates(NUM_UPDATES);
    request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    request.setLocationServices.FusedLocationApi.requestLocationUpdates(locationClient, request, pendingIntent);

问题在于:似乎如果我在意图中包含任何额外内容,则不会包含位置。也就是说,当我调用intent.getExtras().get(FusedLocationProviderApi.KEY_LOCATION_CHANGED);时,结果为空。如果我没有为Intent添加额外内容,则额外内容中会出现Location

我尝试了各种变通办法,包括Location Client request location updates with parcelable extras in PendingIntent的各种迭代,但这似乎对我没用。有没有什么方法可以解决这个问题,即将某些方法存储在别处并在执行位置接收器时检索它们?或者我做了明显错误的事情?

1 个答案:

答案 0 :(得分:-1)

很晚才回答道歉。但对于那些可能仍在寻找的人来说,我找到的答案是: - LocationResult和LocationAvailability都发送到给定的PendingIntent。您可以使用hasResult(Intent),extractResult(Intent),hasLocationAvailability(Intent)和extractLocationAvailability(Intent)从Intent中提取数据。
之后,只需使用您在LocationCallbacks中使用的代码 FusedLocationProviderClient RequestLocationUpdate