Я сохранил сообщение и все другие необходимые вещи в переменных, и теперь я хочу отобразить сообщение пользователям в их определенных всплывающих подсказках.
Отправитель должен видеть сообщение в сером пузыре, а получатель должен видеть сообщение в фиолетовом пузыре.
Я использую базу данных 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);
}
});
}