2011-12-05 37 views
6
smsManager.sendMultipartTextMessage(
       mDests[i], mServiceCenter, messages, 
       sentIntents, deliveryIntents); 

Trong SmsReceiver (sentIntents) đôi khi tôi nhận được getResultCode() = 0.Khi tôi gửi SMS, đôi khi mã kết quả = 0. Mã đó có nghĩa là gì?

Theo tài liệu: http://developer.android.com/reference/android/telephony/SmsManager.html

Nó có nghĩa STATUS_ON_ICC_FREE. Nhưng tôi không thể hiểu nó là gì. Khi nó được trả lại - SMS không được gửi.

Điều này có nghĩa là gì và cách khắc phục? Lý do cho STATUS_ON_ICC_FREE là gì?

+0

Tốt câu hỏi: \. Trang web này liệt kê một mẫu: http://hi-android.info/src/com/android/internal/telephony/gsm/SimSmsInterfaceManager.java.html để nhận giá trị trả lại đó. ICC là thẻ SIM của bạn và những gì họ làm khi họ nhận được tin nhắn đó là xóa một thứ gì đó khỏi SIM. Có lẽ thẻ SIM đã đầy chưa? (thậm chí tham chiếu đến TS 51.011 10.5.3 không thực sự trả lời bất kỳ câu hỏi nào ...) – Yuri

Trả lời

3

Bạn chỉ đang so sánh mã kết quả với sai số không đổi. SmsManager.sendMultipartTextMessage Javadoc nêu rõ về giá trị có thể được trả về bởi các getResultCode() trong sentIntents phát sóng:

The result code will be Activity.RESULT_OK for success, or one of these errors: 
RESULT_ERROR_GENERIC_FAILURE 
RESULT_ERROR_RADIO_OFF 
RESULT_ERROR_NULL_PDU 

Theo STATUS_ON_ICC_xxx hằng của tôi đã được thêm vào các API công cộng do nhầm lẫn vì chúng chỉ được sử dụng bằng các phương pháp ẩn của lớp SmsManager: copyMessageToIcc, deleteMessageFromIcc, vv

CẬP NHẬT

Tuy nhiên điều này không giải thích tại sao bạn nhận 0 từ getResultCode(). Vì không phải của các hằng số này bằng không (Activity.RESULT_CANCEL = 0 nhưng không có đề cập đến nó trong SmsManager javadoc). Quick search thông qua các nguồn Android cũng không đưa ra bất kỳ đầu mối nào là 0 có thể đến từ đó.

Một khả năng có thể là một số ứng dụng khác bắt được phát sóng sentIntent và gọi setResultCode một cách rõ ràng. Tuy nhiên tôi đã chắc chắn đến bây giờ rằng nó không thể trong Android để ngăn chặn các tin nhắn SMS được gửi ở cấp ứng dụng.

2

javadoc nói Free space (TS 51.011 10.5.3/3GPP2 C.S0023 3.4.27).. Các 3GPP2 specifications nói 3GPP2 C.S0023 3.4.27 status

Tôi không biết gì về tin nhắn SMS, nhưng từ những gì tôi hiểu, điều này "không gian trống" là trái ngược với "không gian sử dụng" (xx1 mà thực sự xác định trạng thái như 001 nhận & đọc; 011 receveid & để được đọc, vv)

tôi sẽ nói tình trạng này không có nghĩa là bất cứ điều gì ...

Trong mã Android, tôi đã tìm thấy chỉ có một tham chiếu đến STATUS_ON_ICC_FREE: deleteMessageFromIcc() cập nhật thông điệp với điều này trạng thái khi tin nhắn thành công vi đã bị xóa khỏi thẻ SIM (còn gọi là ICC)

0

Bạn viết mà bạn sử dụng những điều sau đây để gửi một văn bản:
smsManager.sendTextMessage(destination, null, message, null, null);

Tại sao bạn không sử dụng các tham số sentIntent mà có thể cho bạn biết nếu thông điệp của bạn đã được chấp nhận bởi mạng?

Từ các tài liệu:

sentIntent nếu không NULL PendingIntent này được phát sóng khi thông điệp được gửi thành công, hoặc thất bại.Các mã kết quả sẽ Activity.RESULT_OK cho sự thành công, hoặc một trong các lỗi:

RESULT_ERROR_GENERIC_FAILURE 
RESULT_ERROR_RADIO_OFF 
RESULT_ERROR_NULL_PDU 

sms

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