5

Phonegap を使用して、SMS の送信を目的としたプラグインを作成しています。以下は、私がそれを行うために使用する関数です。

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

変数「メッセージ」に英語が含まれている場合、すべて正常に機能します。しかし、メッセージがヘブライ語の場合、エラーが表示されます。

以下のヘブライ語の入力を参照してください

סךסךסך業者ממ2פרפרפר業者פפפפ業者בסרבסר10.3 10.3כמכמ1סלט1סלטסלטשרשרשרשרשר対ש8.15כמכמ2סך2

以下は、テキストの説明を保持するクラスです。問題はユニコードに問題があると思われますが、修正方法がわかりません。

助けてください。

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" />
4

1 に答える 1

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

}
于 2012-11-25T19:49:35.977 に答える