2012-11-24 12 views
5

Sto utilizzando PhoneGap per creare un plug-in finalizzato all'invio di SMS. Di seguito è la funzione che uso per farlo.E-mail ebraico in 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); 
} 

Quando la variabile "messaggio" contiene inglese, tutto funziona correttamente. Ma se il messaggio è in ebraico, ricevo un errore.

Qui sotto ingresso in ebraico

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

seguito è una classe che contiene la descrizione del testo. Sospetto che il problema sia un problema con l'unicode, ma non so come risolverlo.

Per favore aiuto.

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

Vedere di seguito la definizione del file manifest, per vedere la versione di destinazione.

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

"Ricevo un errore." è un'informazione utile come il mio attuale consiglio per te: "allora aggiustalo". –

+0

Che errore ottieni? Su quale versione di Android stai testando? –

+1

Per l'ebraico all'interno di Java Strings, per essere corretto sia l'editor che il compilatore javac devono operare nella stessa codifica ('javac -encoding utf') o usare unicode escape' \ u05d0' (aleph). (È improbabile che tu abbia commesso un errore.) –

risposta

1

Ho trovato la risposta. Il problema era con la classe "SmsManager". Quando il messaggio è troppo lungo, la classe genera un'eccezione, ma senza descrizione.

Quindi ho dovuto utilizzare l'altro metodo "sendMultipartTextMessage" della 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); 

}