我正在使用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的各种迭代,但这似乎对我没用。有没有什么方法可以解决这个问题,即将某些方法存储在别处并在执行位置接收器时检索它们?或者我做了明显错误的事情?
答案 0 :(得分:-1)
很晚才回答道歉。但对于那些可能仍在寻找的人来说,我找到的答案是: -
LocationResult和LocationAvailability都发送到给定的PendingIntent。您可以使用hasResult(Intent),extractResult(Intent),hasLocationAvailability(Intent)和extractLocationAvailability(Intent)从Intent中提取数据。
之后,只需使用您在LocationCallbacks中使用的代码
FusedLocationProviderClient RequestLocationUpdate