私が取り組んでいるアプリケーションでは、機能の 1 つは、ユーザーが以前に設定した場所に到達したときにユーザーに通知することです。
以下のコードは、アクティビティの addProximityAlert にあります。
final Intent intent = new Intent(PROX_ALERT_INTENT);
final PendingIntent pendingIntent = PendingIntent.getBroadcast(
InfoActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
LocationManager locationManager = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);
locationManager.addProximityAlert(18.7726271, 98.9738381, 5000, -1,
pendingIntent);
this.locationReminderReceiver = new LocationReminderReceiver();
final IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT);
this.registerReceiver(this.locationReminderReceiver, filter);
@Override
protected void onPause() {
super.onPause();
if (this.locationReminderReceiver != null) {
Log.i("unregisterReceiver", "unregisterReceiver");
this.unregisterReceiver(this.locationReminderReceiver);
}
}
受信機は次のとおりです。
public class LocationReminderReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final String key = LocationManager.KEY_PROXIMITY_ENTERING;
final Boolean entering = intent.getBooleanExtra(key, false);
if (entering) {
Toast.makeText(context, "LocationReminderReceiver entering", Toast.LENGTH_SHORT).show();
Log.i("LocationReminderReceiver", "entering");
} else {
Toast.makeText(context, "LocationReminderReceiver exiting", Toast.LENGTH_SHORT).show();
Log.i("LocationReminderReceiver", "exiting");
}
}
}
unregisterReceiver
正常に動作しますが、アクティビティを破棄するたびに呼び出す必要があります。つまり、アプリケーションはユーザーに通知しなくなります。しかし、ユーザーがキャンセルするまで、またはアプリを閉じても既に通知されるまで、その場所の近くにいるときにユーザーに通知したい.
私は何が欠けていますか?