gpt4 book ai didi

java - 带有特殊 unicode 字符的 Android ACTION_SEND

转载 作者:行者123 更新时间:2023-12-01 06:06:11 28 4
gpt4 key购买 nike

我正在尝试使用 Intent 发送文本。我认为这很简单:

public Intent getIntent() {
final Intent intent = new Intent();
intent.setComponent(new ComponentName(packageName, ri.activityInfo.name));
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, getText());
return intent;
}

private String getText(){
// the emoji can be one of many. I removed all that for brevity
final int unicode = 0x1F3C5;
final String emoji = String.valueOf(Character.toChars(unicode));
// final String emoji = "\n1F3C5"; //didn't work either
// I also tried using HTML here but I think I have some wires crossed, so I am not ruling that out yet
return textPartOne + " " + emoji + " " + textPartTwo;
}

如您所见,EXTRA_TEXT 中有一个特殊字符(表情符号)。当文本从设备 A 发送时,表情符号会像我期望的那样出现在消息中。但在设备 B(接收者)上,文本显示出一些疯狂的情况(通常在两条不同的消息中):

@.£¡ù¿ ¡ ¡ | | < | | | \ < | [ ¡ { ¡ [ ¡

@H£(ù@æ@a@¤¥¡

¡9@ü@Hù@Θ@=@ø¥p

¡6@Ö@Δì¿ ¡ |

将消息从设备 A 发送到设备 B 或从 B 发送到 A 都没有关系>。无论哪种方式,我都会得到相同的结果,因此我相信这不是不支持表情符号的问题。

现在,如果我删除除表情符号代码之外的所有内容:

Xäx&

如果我完全删除表情符号代码,它就像一个魅力。

但是客户必须拥有这些表情符号...

😤

<小时/>

其他一些可能值得注意的事情:

  • 我正在使用this to manage what intents我正在向用户展示。他们可以选择彩信、电子邮件、Twitter、Facebook 或任何其他内容。我需要支持所有这些

  • 我收到 special characters from Emojipedia

  • 我不会在应用程序的任何位置显示表情符号。它们将显示在短信、电子邮件或 Facebook/Twitter feed 中。

  • 该应用程序的 iOS 版本已经成功实现了这一点。

have尝试过nearly一个dozen不同waysno有用。 有谁知道如何正确发送特殊字符吗?

<小时/>

编辑:

如您所见,我正在发送我想要的表情符号。但结果却与我的预期相去甚远。这是模拟器向自身发送文本的屏幕截图。 enter image description here

这是我尝试过的一些方法

    String attempt1 = "--";
try {
attempt1 = Html.fromHtml(new String("&#x1F3C5".getBytes("UTF-8"))).toString();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

final int codePoint = 0x26F7;
final String attempt2 = new String(new int[]{codePoint}, 0, 1);

final String attempt3 = new String(Character.toChars(codePoint));
final String attempt4 = "\u26F7";

所有结果:

&n

如果我向其中添加文本:

final String attempt4 = "COME ON: \u26F7";

我明白了:

@Σ£(ù@æ@s@@£ Å¡7@X£¿ù¿

这完全有道理他讽刺地说

最佳答案

您可以使用 Intent ,即 Activity 之间发送的消息。在 Intent 中,您可以放置​​所有类型的数据,String、int 等。

就您而言,在 Activity2 中,在转到 Activity1 之前,您将以这种方式存储字符串消息:

Intent intent = new Intent(activity2.this, activity1.class);
intent.putExtra("message", getText());
startActivity(intent);

在activity1的onCreate()中,您可以通过检索Bundle(其中包含调用 Activity 发送的所有消息)并对其调用getString()来获取字符串消息:

Bundle bundle = getIntent().getExtras();
String message = bundle.getString("message");

然后就可以在TextView中设置文本了:

TextView txtView = (TextView) findViewById(R.id.your_resource_textview);    
txtView.setText(message);

希望这有帮助!

关于java - 带有特殊 unicode 字符的 Android ACTION_SEND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44254662/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com