2012-11-24 37 views
5

Tôi đang sử dụng Phonegap để tạo plugin nhằm gửi SMS. Dưới đây là chức năng tôi sử dụng để làm điều đó.SMS tiếng Hebrew trong 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); 
} 

Khi biến "message" chứa tiếng Anh, mọi thứ đều hoạt động tốt. Nhưng nếu thông báo bằng tiếng Hebrew, tôi nhận được lỗi.

Xem bên dưới đầu vào bằng tiếng Hebrew

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

Dưới đây là một lớp học mà giữ mô tả văn bản. Tôi nghi ngờ rằng vấn đề là vấn đề với unicode, nhưng tôi không biết làm thế nào để sửa chữa nó.

Vui lòng trợ giúp.

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

Xem bên dưới định nghĩa tệp kê khai, để xem phiên bản đích.

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

"Tôi nhận được lỗi". là thông tin hữu ích như lời khuyên hiện tại của tôi cho bạn: "sau đó sửa nó". –

+0

Bạn gặp phải lỗi gì? Bạn đang thử nghiệm phiên bản Android nào? –

+1

Đối với tiếng Do Thái bên trong các chuỗi Java phải chính xác cả trình soạn thảo và trình biên dịch javac phải hoạt động trong cùng một bảng mã ('javac -encoding utf') hoặc sử dụng unicode escape' \ u05d0' (aleph). (Không chắc bạn đã nhầm ở đó.) –

Trả lời

1

Tôi tìm thấy câu trả lời. Sự cố xảy ra với lớp "SmsManager". Khi thông báo quá dài, lớp sẽ ném ngoại lệ, nhưng không có mô tả.

Vì vậy, tôi cần sử dụng phương thức "sendMultipartTextMessage" khác của lớp 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); 

} 
Các vấn đề liên quan