通过
注册一组给定坐标的接近警报后LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Intent intent = new Intent(Constants.ACTION_PROXIMITY_ALERT);
intent.putExtra(Constants.INTENT_EXTRA_LOCATION, location); // custom payload
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0);
locationManager.addProximityAlert(location.getLatitude(),
location.getLongitude(), location.getRadius(), -1, pendingIntent);
我在进入或离开配置的位置时会将意图传递给我的服务。到目前为止,非常好。
不幸的是,这些传递的意图中没有一个带有标识位置变化类型(进入或退出)的布尔额外LocationManager.KEY_PROXIMITY_ENTERING
,可以通过Intent.getBooleanExtra
检索。我的观察是基于AOSP 2.1和AOSP 2.2。根据{{3}},这个额外的东西应该总是存在。
我有什么遗漏的吗?在模拟器上使用模拟位置运行时,是否存在对此额外内容的限制?
答案 0 :(得分:5)
事实证明,这似乎是由于在PendingIntent中添加了一个额外的可序列化额外内容。作为一种变通方法,如果需要额外的有效负载,可以自己执行序列化,或者只存储基本类型或字符串。