2012-11-24 6 views
5

J'utilise Phonegap pour créer un plugin visant à envoyer des SMS. Voici la fonction que j'utilise pour le faire.Hébreu SMS dans Android

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

Lorsque la variable "message" contient l'anglais, tout fonctionne correctement. Mais si le message est en hébreu, je reçois une erreur.

Voir ci-dessous entrée en hébreu

סך הלכל מוזמן 2 פריטים סלט פיצוצ בסרי שווה ל 10.3 כמות 1 סלט שרימפס שווה ל 8,15 כמות 2 סך הכל חשבון 26.6 שקלים

Ci-dessous est une classe détient la description du texte. Je soupçonne que le problème est un problème avec l'Unicode, mais je ne sais pas comment le réparer.

Aidez-nous s'il vous plaît.

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

Voir ci-dessous la définition du fichier manifeste, pour voir la version cible.

<uses-sdk 
    android:minSdkVersion="7" 
    android:targetSdkVersion="15" /> 
+0

"Je reçois une erreur". est une information aussi utile que mon conseil actuel pour vous: "alors réparez-le". –

+0

Quelle erreur obtenez-vous? Sur quelle version Android testez-vous? –

+1

Pour que l'hébreu dans Java Strings soit correct, l'éditeur et le compilateur javac doivent fonctionner dans le même codage ('javac -encoding utf') ou utiliser des échappements unicode' \ u05d0' (aleph). (Il est peu probable que vous vous soyez trompé.) –

Répondre

1

J'ai trouvé la réponse. Le problème était avec la classe "SmsManager". Lorsque le message est trop long, la classe renvoie l'exception , mais sans description.

J'ai donc dû utiliser une autre méthode "sendMultipartTextMessage" de la classe SmsManager.

private void sendSMS(String phoneNumber, String message) { 

     SmsManager manager = SmsManager.getDefault(); 

     ArrayList<String> parts = manager.divideMessage(message); 

     manager.sendMultipartTextMessage(phoneNumber, null, parts, null, null); 

}