gpt4 book ai didi

Android RequestLocationUpdates 到带有额外包的 pendingItent

转载 作者:行者123 更新时间:2023-11-30 01:08:35 26 4
gpt4 key购买 nike

我在收到位置更新时触发了 BoradcastReceiver

 PendingIntent pendingIntent = PendingIntent
.getBroadcast(this, 54321, intent, PendingIntent.FLAG_CANCEL_CURRENT);
LocationServices.FusedLocationApi.requestLocationUpdates(this.mGoogleApiClient,
mLocationRequest, pendingIntent);

还有我的收件人

 public static class LocationReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
boolean hasLocation = LocationResult.hasResult(intent);
}
}

如果我运行上面的代码,一切正常,hasLocation 始终为真,完美。

但是如果我想将一些变量传递给接收者,那么我会这样做:

Intent intent = ..
intent.putExtra("test", "hello");
PendingIntent pendingIntent = PendingIntent
.getBroadcast(this, 54321, intent, PendingIntent.FLAG_CANCEL_CURRENT);

现在位在接收者 LocationResult.hasResult(intent);总是假的

这是一个错误吗?有解决方法吗?如何将变量传递给接收者?

最佳答案

我在谷歌搜索时发现了你的问题。我会分享我的解决方案,以防其他人和我一样发现这个问题。

首先这是我的情况,和你的差不多:

requestLocationUpdates() 将位置数据存储在 Intent 的 mExtras 字段中。出于某种原因,如果我使用 Intent.putExtra() 向 Intent 添加另一个 Extra,则不会添加位置数据。所以 onHandleIntent() 被调用,但 Intent 缺少位置数据。如果我不添加任何 Extras,位置数据就会通过,一切都很好。

我的解决方法:

我使用 Intent.addCategory() 和 getCategory() 来做与 putExtra("myExtraName", String) 完全相同的事情。如果要传递其他数据类型,将它们转换为字符串,然后在 onHandleIntent() 中解析它们。

我的环境:

我正在使用 Play 服务版本 11.0.4 和 FusedLocationProviderClient,因为 FusedLocationProviderApi 最近已被弃用。 FusedLocationProviderClient.requestLocationUpdates()文档似乎没有解决这个问题。

关于Android RequestLocationUpdates 到带有额外包的 pendingItent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38653178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com