【问题标题】:how we show smilays on receiving sms in android我们如何在 android 中显示接收短信的 smilays
【发布时间】:2014-03-09 04:08:05
【问题描述】:

我制作了一个短信应用程序,它可以简单地执行发送和接收短信……一切都很好,但是当我发送 smilays 或 emojis 时它显示 emojis 代码而不是 emois 我使用 edittext 发送短信和 textview 接收短信我还更改了输入类型进入longmessage,但仍然有同样的问题......我想在有人发给我和我发给任何人时显示正确的笑脸...... 我的英语不好请不要介意

例如,当我选择默认的 android 表情符号时,我想向我的朋友发送快乐的微笑,它向我显示表情符号代码,例如 :) :( :P 不向我显示表情符号

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

    }

public void ReciverMessages(String message , long time){

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

【问题讨论】:

  • 请在此处粘贴您的代码

标签: android sms


【解决方案1】:

我发现了一个非常有用的表情键盘。此键盘不使用 Unicode 序列,而只是使用本地图像资源。我在想这种类型的键盘只能在这个应用程序中使用,而不能在其他应用程序或操作系统中使用。

因此,我将包含资产的 ImageView 替换为包含 Unicode 序列的 TextView。

在交叉引用支持的 Unicode 序列以及 Visual Unicode 数据库后,我意识到 \u1F601 是 32 位 Unicode 表示,16 位表示可以设置为:

EditText messageInput = (EditText) findViewById(R.id.message_input); messageInput.getText().append("\ud83d\ude01");

Implementations of Emoji (Emoticon) View/Keyboard Layouts

【讨论】:

    猜你喜欢
    • 2012-10-12
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    相关资源
    最近更新 更多