我正在做的是额外添加具有唯一 ID 的不同接近警报,但它不起作用 -
for (int i = 0; i < latArray.size(); i++)
{
Bundle extra = new Bundle();
extra.putInt("UID", i);
Intent intent = new Intent(IntentToFire);
intent.putExtra("Blob", extra);
PendingIntent proximityIntent = PendingIntent.getBroadcast(this,-1 , intent, 0);
LocationManager locationManager =
Log.i("Picture:","Location img:"+GetLocation.imgArray.get(i));
Log.i("Potatoo:", "Lat :"+latArray.get(i)+" Lng :"+lngArray.get(i));
locationManager.addProximityAlert(Double.valueOf(latArray.get(i)), Double.valueOf(lngArray.get(i)), radius,expiration,proximityIntent);
}
然后在广播接收器上我将这段代码 -
flag = intent.getBundleExtra("blob").getInt("UID");
每次我要打印标志时,我都会得到一个错误。一个想法?
最佳答案
尝试使用 FLAG_UPDATE_CURRENT:
PendingIntent.getBroadcast(this,-1 , intent, PendingIntent.FLAG_UPDATE_CURRENT);
我发现最简单的方法是在 Intent
上使用接近警报对数据 uri 中的数据进行编码包含在未决 Intent 中,例如:
geo:<lat>,<lon>?id=<your id>
虽然您可以使用自己的协议(protocol)部分(geo
由谷歌地图 AFAIK 使用)。对我来说没有缓存问题(似乎你得到了一个缓存的/旧的/错误的 PendingIntent)。
关于java - Proximity Alert Intent 不放置或返回额外的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10542235/