簡體   English   中英

我們如何在android中接收短信時顯示smilays

[英]how we show smilays on receiving sms in android

我制作了一個短信應用程序,可以簡單地執行發送和接收短信的操作...一切都很好,但是當我發送smilays或emojis時,它顯示的是emojis代碼而不是emois。仍然有同樣的問題...當任何人寄給我時,以及當我寄給任何人時,我想顯示適當的smilay ....我的英語不好,請介意

例如,當我選擇默認的android emojis時,我想向我的朋友發送開心的笑容,它向我顯示emojis代碼,如:) :(:P不向我顯示emojis

private void SendSms() {
    // TODO Auto-generated method stub
    mPhoneNumber = FriendData.getNumber();
    mMessage=messagetosend.getText().toString();
    SmsManager smManager=SmsManager.getDefault();

    ArrayList<String> parts = smManager.divideMessage(mMessage);

    smManager.sendMultipartTextMessage(mPhoneNumber, null, parts, null, null);

    //String userInput = messagetosend.getText().toString();




    try
    {
    ContentValues values = new ContentValues(); 

        values.put("address", mPhoneNumber); 

        values.put("body", mMessage);
        values.put("date",  DateFormat.getDateTimeInstance().format(new Date()));
        getContentResolver().insert(Uri.parse("content://sms/sent"), values);
        Calendar c = Calendar.getInstance();
        SenderMessages(mMessage, c.getTimeInMillis());
        messagetosend.setText("");
         Toast.makeText(getApplicationContext(), " Message Sent", Toast.LENGTH_LONG).show();
    //  finish();

    }
    catch(Exception ex)
    {
      ex.printStackTrace();




     }

}


@Override
    public void onReceive(Context contx, Intent intent) {



        String body = "";
        String number = "";

        Bundle bundle = intent.getExtras();
        SmsMessage[] msgs = null;
        if (bundle != null) 
        {
            // ---retrieve the SMS message received---
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];
            for (int i = 0; i < msgs.length; i++)
            {
                msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                body += msgs[i].getMessageBody().toString();
                number +=msgs[i].getOriginatingAddress();

            }
        }

        try
        {               
              Toast.makeText(contx, number, Toast.LENGTH_LONG).show();
              Toast.makeText(contx, body, Toast.LENGTH_LONG).show();

        }
        catch(Exception e)
        {
              Toast.makeText(contx, number, Toast.LENGTH_LONG).show();
              Toast.makeText(contx, body, Toast.LENGTH_LONG).show();
        }

    }

公共無效ReciverMessages(字符串消息,很長一段時間){

    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view  = inflater.inflate(R.layout.receiver_activity, null);
    mContainerView.addView(view);
    TextView texttime = (TextView) view.findViewById(R.id.time_date_receiver);
    TextView textmessage = (TextView) view.findViewById(R.id.tvreceiver);

    //DateFormat format = new DateFormat();

    SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy");
    String MSGDate = df.format(time);
    if(MSGDate.equalsIgnoreCase(Utils.GetCurrentDate()))
    {
        SimpleDateFormat df1 = new SimpleDateFormat("HH:mm");
        String MSGDate1 = df1.format(time);
        texttime.setText(MSGDate1);
    }else
    {
        texttime.setText(MSGDate);
    }

    textmessage.setText(message);
}

我發現了一個非常有用的表情鍵盤。 該鍵盤不使用Unicode序列,而僅使用本地圖像資產。 我認為這種類型的鍵盤只能在此應用程序中有用,而不適用於其他應用程序或操作系統。

因此,我改為將包含資產的ImageView替換為包含Unicode序列的TextView。

在交叉引用支持的Unicode序列和Visual Unicode數據庫之后,我意識到\\ u1F601是32位Unicode表示形式,而16位的表示形式可以設置為:

EditText messageInput =(EditText)findViewById(R.id.message_input); 。messageInput.getText()追加( “\\ ud83d \\ ude01”);

Emoji(Emoticon)視圖/鍵盤布局的實現

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM