2011-10-20 47 views
1

这是简单的代码发送短信。sendTextMessage在android手机

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

但我无法运行此代码。 此代码在Android版本2.1中运行成功,但是我的手机Samsung galaxy II发生NullPointException错误。告诉我这个问题。这里是AndroidManifest.xml代码和错误日志。

<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

我试过代码,它为我工作(虽然我没有将电话号码替换为有效的电话号码)。请从logcat输出中粘贴更多行,这可能有助于定位问题。 –

+0

好吧,我会的,请帮助我! –

回答

4

给挂起的意图在第48行波纹管

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

上午给予肯定它的工作原理:)

4

当你的信息长度超过普通的文本信息长度也会发生此问题(即160字符)您需要将味精分成几部分并发送...使用此代码可以帮助您

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

在SMS消息中使用特殊字符时出现此问题。改为正常的英文字符为我工作。

0

的空例外是在SMS lenght,你可以在你的代码中使用

try {}catch(Exception ex) {} 

的情况下,你会得到空的异常和使用尝试发送“分”短信:

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

之间有没有任何优势之间正常发送和捕捉vs只是总是分割和发送? – CoderNinja