我遇到了接近警报的问题。在我的安卓应用中,我有一些位置的设置,用户可以禁用/启用接近警报。当他们禁用接近警报时,所有功能都很好,并且不会收到通知,但是如果他们禁用并重新启用接近警报,则它会再次添加,当他们到达位置时就会收到两次通知等等。因此,每次他们重新启用它时,它都会创建一个新的接近警报。
以下是我用于删除接近警报的代码:
以下是我用于删除接近警报的代码:
private void removeProximityAlert(int id) {
final LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
Intent intent = new Intent(PROX_ALERT_INTENT + id);
PendingIntent proximityIntent = PendingIntent.getBroadcast(this, id, intent, PendingIntent.FLAG_CANCEL_CURRENT);
manager.removeProximityAlert(proximityIntent);
}
这是我用来添加接近警报的代码:
private void addProximityAlert(double latitude, double longitude, int id, int radius, String title) {
final LocationManager manager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
Intent intent = new Intent(PROX_ALERT_INTENT + id);
PendingIntent proximityIntent = PendingIntent.getBroadcast(this, id, intent, PendingIntent.FLAG_CANCEL_CURRENT);
manager.addProximityAlert(
latitude,
longitude,
radius,
-1,
proximityIntent
);
IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT + id);
registerReceiver(new ProximityIntentReceiver(id, title), filter);
}
PendingIntent.getBroadcast(this, id, intent, PendingIntent.FLAG_UPDATE_CURRENT).cancel();
吗?添加 cancel 可以“取消当前活动的 PendingIntent。只有拥有 PendingIntent 的原始应用程序才能取消它。” - jnthnjnsFLAG_UPDATE_CURRENT
将返回现有的PendingIntent
,而cancel()
则按其名称执行。 - jnthnjns