Android 中的希伯来语短信
Posted
技术标签:
【中文标题】Android 中的希伯来语短信【英文标题】:Hebrew SMS in Android 【发布时间】:2012-11-24 15:28:16 【问题描述】:我正在使用 Phonegap 创建旨在发送短信的插件。下面是我用来做的函数。
private void sendSMS(String phoneNumber, String message)
// Activity currentActivity = (Activity)this.ctx;
SmsManager manager = SmsManager.getDefault();
PendingIntent sentIntent = PendingIntent.getActivity(cordova.getContext(), 0, new Intent(), 0);
manager.sendTextMessage(phoneNumber, null, message, sentIntent, null);
当变量“message”包含英语时,一切正常。但如果 消息是希伯来语,我收到一个错误。
请参阅下面的希伯来语输入
סך הלכל מוזמן 2 פריטים סלט פיצוצ בסרי שווה ל 10.3 כמות 1 סלט שרימפס שווה ל 8.15 כמות 2 סך הכל חשבון 26.6 שקלים
下面是一个包含文本描述的类。我怀疑问题出在 unicode 上,但我不知道如何解决。
请帮忙。
public class MenuEntry
public String getPid()
return pid;
public void setPid(String pid)
this.pid = pid;
public String getTitle()
return title;
public void setTitle(String title)
this.title = title;
public String getDescription()
return description;
public void setDescription(String description)
this.description = description;
public double getPrice()
return price;
public void setPrice(double price)
this.price = price;
public String getCategoryName()
return categoryName;
public void setCategoryName(String categoryName)
this.categoryName = categoryName;
public MenuEntry()
super();
this.pid = "";
public String GetPriceAndDescription(int unit)
StringBuilder result = new StringBuilder();
result.append(this.getTitle());
result.append(" שווה ל ");
result.append(this.getPrice());
result.append(" כמות ");
result.append(unit);
result.append("\n");
return result.toString();
public String GetPriceAndDescription()
StringBuilder result = new StringBuilder();
result.append(this.getTitle());
result.append(" שווה ל ");
result.append(this.getPrice());
result.append("\n");
return result.toString();
public MenuEntry(String pid, String title, String description, double price, String categoryName)
super();
this.pid = pid;
this.title = title;
this.description = description;
this.price = price;
this.categoryName = categoryName;
private String pid;
private String title;
private String description;
private double price;
private String categoryName;
见下面清单文件的定义,看看目标版本。
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="15" />
【问题讨论】:
“我收到一个错误。”与我目前对您的建议一样有用的信息:“然后修复它”。 您遇到什么错误?您在哪个 Android 版本上进行测试? 为了使 Java 字符串中的希伯来语正确,编辑器和 javac 编译器必须以相同的编码 (javac -encoding utf
) 运行或使用 unicode 转义 \u05d0
(aleph)。 (不太可能你错了。)
是否可以通过编程方式将其转换为 unicode。我在 Eclipse 中看到,有一个将文本转换为 Unicode 的菜单,但我找不到它。
【参考方案1】:
我找到了答案。 问题出在“SmsManager”类上。当消息太长时, 该类抛出异常,但没有描述。
所以我需要使用 SmsManager 类的其他方法“sendMultipartTextMessage”。
private void sendSMS(String phoneNumber, String message)
SmsManager manager = SmsManager.getDefault();
ArrayList<String> parts = manager.divideMessage(message);
manager.sendMultipartTextMessage(phoneNumber, null, parts, null, null);
【讨论】:
以上是关于Android 中的希伯来语短信的主要内容,如果未能解决你的问题,请参考以下文章
Android 8.1 自定义热点的时候设置了热点maxLength="32",但是在希伯来语等状态下还是发现在没到32个字符之前就无法把热点设置成功了