2017-04-18 4 views
1

Ich baue eine App und stieß auf ein Problem, auf das ich keine Antwort finden konnte. Ich habe eine Realm-Datenbank, die ich verwende, um einige sehr einfache Informationen zu speichern. Jetzt möchte ich jeden Tag um eine bestimmte Zeit den Benutzer mit einer Benachrichtigung mit ein paar Tasten darauf hinweisen. Und je nachdem, auf welche Schaltfläche der Benutzer klickt, möchte ich einen anderen Wert in die Realm-Datenbank schreiben. Präferenzlos, ohne die App zu öffnen. Ist das möglich?Android: Schreiben in Realm-Datenbank von Benachrichtigung

Vielen Dank im Voraus!

+0

, was Sie bisher versucht haben? –

+0

@BradleyWilson Ich habe es geschafft, geplante Benachrichtigungen an den Benutzer zu senden, aber ich bin unsicher, wie man in die Datenbank schreibt, wenn die App nicht geöffnet ist. – JesperQv

+0

Leider bin ich kein Experte in diesem Bereich. Ich hatte gehofft, dass Sie Ihrer Frage einen Code hinzufügen würden, um zukünftigen Lesern die Richtung zu erläutern, die Sie eingeschlagen haben oder unternommen haben. –

Antwort

-1

Sie können es auf diese Weise tun.
Zuerst erstellen Sie eine Benachrichtigung mit Aktionen darauf.

Intent intentLike = new Intent("MY_ACTION"); 
intentLike.putExtra("KEY","LIKE"); 
PendingIntent likePendingIntent = PendingIntent.getBroadcast(context,0,intentLike,PendingIntent.FLAG_UPDATE_CURRENT); 

Intent intentShare = new Intent("MY_ACTION"); 
intentShare.putExtra("KEY","SHARE"); 
PendingIntent sharePendingIntent = PendingIntent.getBroadcast(context,1,intentShare,PendingIntent.FLAG_UPDATE_CURRENT); 

NotificationCompat.Builder mBuilder = 
    new NotificationCompat.Builder(this) 
    .setSmallIcon(R.drawable.notification_icon) 
    .setContentTitle("My notification") 
    .setContentText("Hello World!") 
    .addAction(R.drawable.notification_action_like, "Like", likePendingIntent) 
    .addAction(R.drawable.notification_action_share, "Share", sharePendingIntent); 

NotificationManager mNotificationManager = 
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
// mId allows you to update the notification later on. 
mNotificationManager.notify(mId, mBuilder.build()); 

Erstellen Sie jetzt eine BroadcastReceiver-Klasse, um Werte zu empfangen.

public class LikeShareReceiver extends BroadcastReceiver {  
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String receivedValue = intent.getExtra("KEY"); 
     if (receivedValue.equals("LIKE")) { 
     //update like in Realm database. 
     }else if (receivedValue.equals("SHARE")) { 
     //update share in Realm database. 
    } 

    }  
} 

Fügen Sie diesen BroadcastReceiver in der Manifestdatei hinzu.

<receiver android:enabled="true" android:name="LikeShareReceiver"> 
    <intent-filter> 
    <action android:name="MY_ACTION" /> 
    </intent-filter> 
</receiver> 

Wie funktioniert das?
Wenn ein Benutzer auf eine Aktionsschaltfläche klickt, wird eine Übertragung mit einer Absicht ausgelöst, die Werte enthält. BroadcastReceiver empfängt diese Übertragung und aktualisiert die Datenbank entsprechend.

Hinweis: addAction() -Methode nur mit api Ebene arbeiten> = 4.1