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

मेरे एसएमएस रिसीवर (भेजे गए इंडेंट्स) में कभी-कभी मुझे getResultCode() = 0 प्राप्त होता है।जब मैं एसएमएस भेजता हूं, कभी-कभी परिणाम कोड = 0. उस कोड का क्या अर्थ है?

प्रलेखन के अनुसार: http://developer.android.com/reference/android/telephony/SmsManager.html

इसका मतलब है STATUS_ON_ICC_FREE। लेकिन मैं समझ नहीं पा रहा हूं कि यह क्या है। जब यह वापस किया जाता है - एसएमएस नहीं भेजा जाता है।

इसका क्या अर्थ है और इसे कैसे ठीक किया जाए? STATUS_ON_ICC_FREE का कारण क्या है?

+0

अच्छा प्रश्न: \। इस वेबसाइट में नमूना सूचीबद्ध है: http://hi-android.info/src/com/android/internal/telephony/gsm/SimSmsInterfaceManager.java.html जो उस वापसी मूल्य को पकड़ता है। आईसीसी आपका सिम कार्ड है, और जब वे उस संदेश को पकड़ते हैं तो वे सिम से कुछ हटा देते हैं। शायद सिम कार्ड भरा हुआ है? (यहां तक ​​कि टीएस 51.011 10.5.3 का उनका संदर्भ वास्तव में किसी भी प्रश्न का उत्तर नहीं देता है ...) – Yuri

उत्तर

3

आप केवल गलत कोड पर परिणाम कोड की तुलना कर रहे हैं।

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 

मेरी राय STATUS_ON_ICC_xxx स्थिरांक में गलती से सार्वजनिक एपीआई में जोड़ा गया था, क्योंकि वे केवल SmsManager वर्ग की छिपी तरीकों से उपयोग किया जाता है: SmsManager.sendMultipartTextMessage जावाडोक स्पष्ट रूप से sentIntents प्रसारण में getResultCode() द्वारा दिया संभव मूल्यों के बारे में कहा गया है: copyMessageToIcc, deleteMessageFromIcc आदि

अद्यतन

हालांकि इस व्याख्या नहीं करता है तुम क्यों 0 01 से प्राप्त कर सकता हूँ। चूंकि इनमें से कोई भी स्थिर शून्य के बराबर नहीं है (Activity.RESULT_CANCEL = 0 लेकिन SmsManager जावाडोक में इसका कोई उल्लेख नहीं है)। एंड्रॉइड स्रोतों के माध्यम से Quick search कोई भी संकेत नहीं देता है 0 से आ सकता है।

एक संभावना यह हो सकती है कि कुछ अन्य एप्लिकेशन sentIntent प्रसारित करें और स्पष्ट रूप से setResultCode पर कॉल करें। हालांकि मुझे यकीन था कि एंड्रॉइड में एप्लिकेशन स्तर पर एसएमएस को भेजने से रोकने के लिए असंभव है।

2

जावाडोक Free space (TS 51.011 10.5.3/3GPP2 C.S0023 3.4.27). कहता है। 3GPP2 specifications कहना 3GPP2 C.S0023 3.4.27 status

मैं एसएमएस के बारे में कुछ नहीं पता है, लेकिन मैं क्या समझ, इस "मुक्त अंतरिक्ष" "प्रयुक्त अंतरिक्ष" (xx1 है कि वास्तव में स्थितियों में इस तरह के 001 के रूप में & पढ़ने प्राप्त परिभाषित करता है करने का विरोध किया है से; 011 receveid & पढ़ने के लिए; आदि)

मैं कहना है कि यह स्थिति कुछ भी मतलब नहीं है कि ...

एंड्रॉयड कोड में, मैं पाया है केवल एक संदर्भ STATUS_ON_ICC_FREE रहे हैं: deleteMessageFromIcc() इस के साथ संदेश का अद्यतन स्थिति सफलतापूर्वक होने पर स्थिति सिम कार्ड से हटा दिया गया है (उर्फ आईसीसी)

0

आप लिखना है कि आप एक पाठ भेजने के लिए निम्नलिखित का उपयोग करें:
smsManager.sendTextMessage(destination, null, message, null, null);

तुम क्यों sentIntent पैरामीटर जो आप बता सकते हैं कि क्या आपका संदेश नेटवर्क के द्वारा स्वीकार कर लिया गया का उपयोग नहीं कर रहे हैं?

प्रलेखन से

:

sentIntent अगर यह PendingIntent रिक्त नहीं जब संदेश सफलतापूर्वक भेजा गया है प्रसारण, या विफल रहा है।परिणाम कोड सफलता के लिए Activity.RESULT_OK, या इन त्रुटियों में से एक हो जाएगा:

RESULT_ERROR_GENERIC_FAILURE 
RESULT_ERROR_RADIO_OFF 
RESULT_ERROR_NULL_PDU 

sms

संबंधित मुद्दे