我已经将消息和所有其他必需的东西存储在变量中,现在我想以特定的气泡向用户显示消息。
发件人必须看到灰色气泡中的消息,而接收方必须看到紫色气泡中的消息。
我正在使用Firebase数据库而不是FCM来实现此目的。消息和其他必要信息也这样存储:
username
Vasu
是接收者。
用于存储值的侦听器的用法如下:
DatabaseReference rRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uref = rRef.child("users"); //users is the main parent child of all other children in database
DatabaseReference TUidRef = usersRef.child(td);
Log.i("bang",td);
TUidRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
ms = dataSnapshot.child("rec_msg").getValue(String.class);
fUid = dataSnapshot.child("fromUID").getValue(String.class);
st = dataSnapshot.child("rec_secret").getValue(String.class);
int km = 0;
try {
km = Integer.parseInt(st);
}
catch (NumberFormatException e) {
Log.d("NumberError:", "Can't convert");
}
if(ms!=null && !ms.equals(""))
addMessageBox(ms,km);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException();
}
});
td
是接收者子元素的uid
,所有内容都存储在其中。
我正在像下面那样使用addMessageBox()
,但是它没有显示接收者的消息,只是显示了发送者的消息(在他的设备中)。
private void addMessageBox(String message, int k){
TextView tv = new TextView(Main5Activity.this);
message = decryptMessage(message,k);
tv.setPadding(20, 30, 30, 20);
tv.setTextSize(1, (float) 20.1);
if(tUid!=null && fromUid!=null) {
Log.i("toUID", tUid);
Log.i("fromUID", fromUid);
}
LinearLayout.LayoutParams lp2 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
lp2.weight = 1.0f;
if (mAuth.getCurrentUser().getUid().equals(tUid)){
tv.setText(message);
lp2.gravity = Gravity.START;
tv.setBackgroundResource(R.drawable.rounded_rectangle_violet);
}
else if (mAuth.getCurrentUser().getUid().equals(fromUid)) {
tv.setText(message);
lp2.gravity = Gravity.END;
tv.setBackgroundResource(R.drawable.rounded_rectangle_grey);
}
tv.setLayoutParams(lp2);
layout.addView(tv);
//scroll the text to the end of the screen, auto scrolling
scrollView.post(new Runnable()
{
public void run()
{
scrollView.fullScroll(View.FOCUS_DOWN);
}
});
}