2011-10-20 6 views
1

Ceci est un code simple envoyer un SMS.sendTextMessage Dans le téléphone android

47: SmsManager sms = SmsManager.getDefault(); 
48: sms.sendTextMessage("12345678901", null, "hello!", null, null); 

Mais je ne peux pas exécuter ce code. Ce code fonctionne avec succès dans Android version 2.1, mais mon téléphone, Samsung galaxy II, il se produit erreur NullPointException. Parlez-moi de ce problème. Voici le code AndroidManifest.xml et le journal des erreurs.

<uses-permission android:name="android.permission.SEND_SMS"/> 

FATAL EXCEPTION: main 
java.lang.RuntimeException:Unable to start activity ComponentInfo {ric.FPSProject.FamilyPositionSearch/ric.FPSProject.SinglePos.SinglePosMap}: java.lang.NullPointerException 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2668) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684) 
    at android.app.ActivityThread.access$2300(ActivityThread.java:126) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:123) 
    at android.app.ActivityThread.main(ActivityThread.java:4632) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:521) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
    at android.os.Parcel.readException(Parcel.java:1253) 
    at android.os.Parcel.readException(Parcel.java:1235) 
    at com.android.internal.telephony.ISms$Stub$Proxy.sendText(ISms.java:561) 
    at android.telephony.SmsManager.sendTextMessage(SmsManager.java:109) 
    **at ric.FPSProject.SinglePos.SinglePosMap.sendSMS(SinglePosMap.java:48)** 
    at ric.FPSProject.SinglePos.SinglePosMap.initPersonData(SinglePosMap.java:273) 
    at ric.FPSProject.SinglePos.SinglePosMap.onCreate(SinglePosMap.java:134) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2632) 
    ... 11 more 
+0

J'ai essayé le code, et cela a fonctionné pour moi (bien que j'ai fait remplacer le numéro de téléphone à un numéro de téléphone valide). Collez plus de lignes à partir de la sortie logcat, ce qui pourrait aider à localiser le problème. –

+0

Ok, je vais, et s'il vous plaît aidez-moi! –

Répondre

4

donnent l'intention en attente dans votre ligne 48e comme indiqué ci-dessous

String sent = "android.telephony.SmsManager.STATUS_ON_ICC_SENT"; 
PendingIntent piSent = PendingIntent.getBroadcast(smsActivity.this, 0,new Intent(sent), 0); 

sms.sendTextMessage("12345678901", null, "hello!", piSent, null); 

suis sûr que cela fonctionne :)

4

Ce problème se produit également lorsque la longueur de votre msg dépasse la longueur normale du texte msg (c.-à- 160 caractères) vous devez diviser le msg en pièces et envoyer ... Utilisez ce code, il peut vous aider

public static void sendSms(Activity curActivity, String phoneNumber, String msg) { 
SmsManager smsManager = SmsManager.getDefault(); 

ArrayList<String> msgStringArray = smsManager.divideMessage(msg);  

smsManager.sendMultipartTextMessage(phoneNumber, null, msgStringArray, null, null); 
} 
0

J'ai rencontré ce problème lors de l'utilisation de caractères spéciaux dans le message SMS. Changer pour les caractères anglais normaux a fonctionné pour moi.

0

L'exception Null est dans la longueur de SMS, vous pouvez utiliser

try {}catch(Exception ex) {} 

dans votre code si vous obtenez exception nulle et essayer d'envoyer des SMS "divisé" en utilisant:

ArrayList<String> parts = sms.divideMessage(message); 
sms.sendMultipartTextMessage(telephone, null, parts, null, null); 
+0

Y at-il un avantage entre l'envoyer normalement et attraper vs toujours diviser et envoyer? – CoderNinja

Questions connexes