2011-12-05 18 views
6

10 SMS gönderdiğimde bazen kod = 0 olur. Bu kod ne anlama geliyor? Benim SmsReceiver (sentIntents) olarak

smsManager.sendMultipartTextMessage(
       mDests[i], mServiceCenter, messages, 
       sentIntents, deliveryIntents); 
bazen getResultCode() = 0 alırlar. belgelerine göre

: http://developer.android.com/reference/android/telephony/SmsManager.html

Bu STATUS_ON_ICC_FREE anlamına gelir. Ama ne olduğunu anlayamıyorum. Döndüğünde - SMS gönderilmez.

bu ortalama ve nasıl bunu düzeltmek için ne yapar? STATUS_ON_ICC_FREE nedenleri nedir?

+0

İyi soru: \. Bu web sitesinde bir örnek verilmiştir: http://hi-android.info/src/com/android/internal/telephony/gsm/SimSmsInterfaceManager.java.html bu dönüş değerini yakalar. ICC, SIM kartınızdır ve bu mesajı yakaladıklarında yaptıkları şey SIM'den bir şeyi kaldırır. Belki SIM kart dolu mu? (TS 51.011 10.5.3'e atıfta bulunmaları bile, herhangi bir soruyu cevaplamıyor ...) – Yuri

cevap

3

silinmiş tr Sadece yanlış sabite sonuç kodunu kıyaslıyorsun. onlar SmsManager sınıfının gizli yöntemlerle sadece kullanıldığından Bence STATUS_ON_ICC_xxx sabitleri olarak

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 

yanlışlıkla kamu API eklenmiştir

: SmsManager.sendMultipartTextMessage Javadoc açıkça sentIntents yayınında getResultCode() tarafından döndürülen olası değerleri hakkında devletler: copyMessageToIcc, deleteMessageFromIcc

Ancak bu açıklamaz GÜNCELLEME neden 01 0 alırım vs.. Bu sabit hiçbiri sıfır eşittir (Activity.RESULT_CANCEL = 0 ama hiçbir söz SmsManager javadoc içinde yoktur) gibi. Android Kaynakları aracılığıyla Quick search da gelen 0 gelebilir edildi herhangi bir ipucu vermez.

Başka bir uygulama, sentIntent yayını yakalayıp, setResultCode numaralı telefonu açıkça arayabilir. Ancak, Android'in SMS'in uygulama düzeyinde gönderilmesini engellemesinin artık mümkün olmadığından emin oldum.
smsManager.sendTextMessage(destination, null, message, null, null);

Neden mesajı şebeke tarafından da kabul edilmesi söyleyebilirim sentIntent parametresini kullanılmıyor:

2

javadoc Free space (TS 51.011 10.5.3/3GPP2 C.S0023 3.4.27). söylüyor. 3GPP2 specifications Ben SMS hakkında hiçbir şey bilmiyorum 3GPP2 C.S0023 3.4.27 status

söylüyorlar ama ben bu "boş alan" "kullanılmış boşluk" (aslında böyle 001 olarak & okuma alınan durumları tanımlar xx1 karşıdır anladığım kadarıyla; 011 okunacak & receveid; vs.)

Bu durum bir şey diyor anlamına gelmez olur

... Android kodunda

, sadece bir referans STATUS_ON_ICC_FREE bulduk: deleteMessageFromIcc() bununla mesajı günceller mesaj başarılı olduğunda durum SIM kartın (aka ICC)

0

Sen bir metin göndermek için aşağıdaki kullandığını yazma? belgelerine

:

sentIntent mesajı başarıyla gönderildiğinde yayın veya başarısız olduğu bu PendingIntent NULL değilse.sonuç kodu başarı için Activity.RESULT_OK veya bu hatalardan biri olur:

RESULT_ERROR_GENERIC_FAILURE 
RESULT_ERROR_RADIO_OFF 
RESULT_ERROR_NULL_PDU 

sms