0
我試圖將傳入的消息發送到我的android手機以保存在firebase中。但它保存了最後收到的一個。似乎firebase db發生了某種覆蓋。你能幫我弄清楚這個問題嗎?在此先感謝如何將收到的消息保存到firebase數據庫
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
/**
* Created by EngMohamed on 5/26/2017.
*/
public class SMSReciever extends BroadcastReceiver{
private DatabaseReference mFirebaseDatabase;
private FirebaseDatabase mFirebaseInstance;
@Override
public void onReceive(Context context, Intent intent) {
//—get the SMS message passed in—
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String messages = "";
if (bundle != null)
{
//—retrieve the SMS message received—
Object[] smsExtra = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[smsExtra.length];
for (int i=0; i<msgs.length; i++)
{
SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);
//take out content from sms
String body = sms.getMessageBody().toString();
String address = sms.getOriginatingAddress();
messages += "SMS from " + address + " :\n";
messages += body + "\n";
}
putSmsToFirebase(sms,context);
}
}
public void putSmsToFirebase(SmsMessage sms, Context context)
{
String messageDate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
String messageBody = sms.getMessageBody().toString();
String messageSender= sms.getOriginatingAddress().toString();
mFirebaseInstance = FirebaseDatabase.getInstance();
mFirebaseDatabase = mFirebaseInstance.getReference("messages");
mFirebaseDatabase.child("messagesender").push().setValue(messageSender);
mFirebaseDatabase.child("messagebody").push().setValue(messageBody);
mFirebaseDatabase.child("messagedate").push().setValue(messageDate);
}
}
非常感謝您的回覆,但實際上並沒有幫助。同樣的問題發生。新的傳入消息將覆蓋前一個消息。 –