2012-11-24 17 views
5

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

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クラスであるחשבוןそのテキスト記述を保持します。私は問題がユニコードの問題だと思うが、私はそれを修正する方法を知らない。

助けてください。

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" /> 
+0

「エラーが発生しました。」あなたのための私の現在のアドバイスと同じくらい役に立つ情報です: "それを修正する"。 –

+0

どのようなエラーが表示されますか?どのAndroidバージョンでテストしていますか? –

+1

ヘブライ語内のJava文字列が正しくなるためには、エディタとjavacコンパイラは同じエンコーディング(javac -encoding utf')で動作するか、unicodeエスケープ '\ u05d0'(aleph)を使用する必要があります。 (あなたがそこで誤っているとは思わないでしょう) –

答えて

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

} 
関連する問題