1

我正在做的是添加具有唯一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");

每次我要打印标志时,我都会收到一个错误。一个想法?

4

1 回答 1

4

尝试使用 FLAG_UPDATE_CURRENT:

PendingIntent.getBroadcast(this,-1 , intent, PendingIntent.FLAG_UPDATE_CURRENT);

我发现最简单的方法是对 data-uri 中的数据进行编码,Intent并在未决意图中包含接近警报,例如:

geo:<lat>,<lon>?id=<your id>

您可以使用自己的协议部分(geo谷歌地图 AFAIK 使用)。对我来说没有缓存问题(似乎你得到了一个缓存/旧/错误的 PendingIntent)。

于 2012-05-11T10:14:23.447 回答