如何在一对一的短信应用程序中的特定气泡中显示消息?

时间:2018-09-01 08:56:17

标签: android firebase firebase-realtime-database

我已经将消息和所有其他必需的东西存储在变量中,现在我想以特定的气泡向用户显示消息。

发件人必须看到灰色气泡中的消息,而接收方必须看到紫色气泡中的消息。

我正在使用Firebase数据库而不是FCM来实现此目的。消息和其他必要信息也这样存储:

username Vasu是接收者。

database

用于存储值的侦听器的用法如下:

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);
               }
           });
    }

0 个答案:

没有答案