0

我正在做一个小项目,它发送带有情感图标的消息。我使用以下函数将图像转换为 spannble 字符串以将情感图标作为文本发送,但问题是接收者无法在他的消息上看到情感图标,而不是接收者看到的情感图标 [ H]????

 public SpannableStringBuilder addSmily(int position){
        Drawable happySmileys = mContext.getResources().getDrawable(mThumbIds[position]);
        happySmileys .setBounds(0, 0, happySmileys.getIntrinsicWidth(), happySmileys.getIntrinsicHeight());
        /*Drawable sadSmiley = this.getResources().getDrawable(R.drawable.progress_4);
        sadSmiley .setBounds(0, 0, sadSmiley.getIntrinsicWidth(), sadSmiley.getIntrinsicHeight());*/

        SpannableStringBuilder builder = new SpannableStringBuilder();
        builder.append("[h]");
        builder.setSpan(new ImageSpan(happySmileys), builder.length()-"[h]".length(), builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        return builder;
    }

感谢您阅读我的问题。有什么建议吗??

4

2 回答 2

1

您要求做的不是所有设备都支持,管理用户电话消息的应用程序不知道该怎么做。如果你想让它工作,你需要编写自己的应用程序来阅读消息(顺便说一句,这并不难)。然后,当您向安装了您的应用程序的人发送消息时,您可以做任何事情......

于 2012-04-24T05:29:32.923 回答
0

谢谢巴比布的概念。经过一番研究,我发现这里的解决方案就是我的实施方式。

我的应用程序发送消息,例如“我很高兴在此处输入图像描述”作为“我很高兴:-)”然后当我收到消息时,我检查模式:-) 并将其替换为 在此处输入图像描述.

这是我如何替换

public static CharSequence addSmileySpans(Context context, CharSequence your_recieved_message) {
    HashMap<Integer, String> smilyRegexMap = new HashMap<Integer, String>();

    smilyRegexMap.put(R.drawable.android_smile, ":-\\)");


    SpannableStringBuilder builder = new SpannableStringBuilder(your_recieved_message);
    @SuppressWarnings("rawtypes")
    Iterator it = smilyRegexMap.entrySet().iterator();
    while (it.hasNext()) {
        @SuppressWarnings("rawtypes")
        Map.Entry pairs = (Map.Entry) it.next();
        Pattern mPattern = Pattern.compile((String) pairs.getValue(),
                Pattern.CASE_INSENSITIVE);
        Matcher matcher = mPattern.matcher(your_recieved_message);
        while (matcher.find()) {
            Bitmap smiley = BitmapFactory.decodeResource(
                    context.getResources(), ((Integer) pairs.getKey()));
            builder.setSpan(new ImageSpan(smiley), matcher.start(),
                    matcher.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
    }
    return builder;
}

然后在 TextView 上设置函数的返回值,例如

messageTextView.setText(addSmileySpans(context,"i iam happy :-)"))
于 2012-06-08T11:45:33.473 回答