Ich folgte this Entwickler-Tutorial, und Geofencing funktioniert wie erwartet in meiner App.Android, Display alertDialog anstelle von Benachrichtigung, wenn App geöffnet ist
eine Benachrichtigung gesendet wird, wenn ein Geofence Übergang auftritt, innerhalb einer IntentService
:
@Override
protected void onHandleIntent(Intent intent) {
GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent);
...
sendNotification(geofenceTransitionDetails);
}
private void sendNotification(String notificationDetails) {
// Create an explicit content Intent that starts the main Activity.
Intent notificationIntent = new Intent(getApplicationContext(), MainActivity.class);
// Construct a task stack.
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Add the main Activity to the task stack as the parent.
stackBuilder.addParentStack(MainActivity.class);
// Push the content Intent onto the stack.
stackBuilder.addNextIntent(notificationIntent);
// Get a PendingIntent containing the entire back stack.
PendingIntent notificationPendingIntent =
stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
// Get a notification builder that's compatible with platform versions >= 4
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
// Define the notification settings.
builder.setSmallIcon(R.mipmap.ic_launcher)
// In a real app, you may want to use a library like Volley
// to decode the Bitmap.
.setLargeIcon(BitmapFactory.decodeResource(getResources(),
R.mipmap.ic_launcher))
.setColor(Color.RED)
.setContentTitle(notificationDetails)
.setContentText("Return to app")
.setContentIntent(notificationPendingIntent);
// Dismiss notification once the user touches it.
builder.setAutoCancel(true);
// Get an instance of the Notification manager
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Issue the notification
mNotificationManager.notify(0, builder.build());
}
Dies ist Cookie-Cutter aus dem Tutorial. Die Absicht ist in der Haupttätigkeit Aufstellmaße:
private PendingIntent getGeofencePendingIntent() {
// Reuse the PendingIntent if we already have it.
if (mGeofencePendingIntent != null) {
return mGeofencePendingIntent;
}
Intent intent = new Intent(this, GeofenceTransitionsIntentService.class);
// We use FLAG_UPDATE_CURRENT so that we get the same pending intent back when calling
// addGeofences() and removeGeofences().
return PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
Wie kann ich Funktionalität hinzufügen, die die Meldungen unterdrückt, wenn die App geöffnet ist, und zeigt stattdessen eine Alertdialog für den Benutzer? Im Idealfall würde ich gerne verschiedene Aufgaben ausführen können, je nachdem, in welcher Ansicht sich der Benutzer gerade befindet, wenn der Geofence-Übergang stattfindet. Kann ich den Übergang von jeder Ansicht aus oder in irgendeiner Weise global überwachen/abfangen?
Vielen Dank im Voraus.
Ich habe mich gerade eingeloggt, um Danke zu sagen. –