这是简单的代码发送短信。
47: SmsManager sms = SmsManager.getDefault();
48: sms.sendTextMessage("12345678901", null, "hello!", null, null);
但我无法运行此代码。 这个代码在Android 2.1版中运行成功,但是我的手机,三星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 :(得分: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);
我相信它有效:)
答案 1 :(得分:4)
当你的msg长度超过正常的文本msg长度(即160个字符)时,你需要将msg分成几个部分并发送...这个问题也会发生...使用这段代码它可以帮到你
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);
}
答案 2 :(得分:0)
在SMS消息中使用特殊字符时遇到此问题。改为正常的英文字符对我有用。
答案 3 :(得分:0)
Null Exception在SMS长度中,您可以使用
try {}catch(Exception ex) {}
在您的代码中,以防您获得null异常并尝试使用以下命令发送“分割”短信
ArrayList<String> parts = sms.divideMessage(message);
sms.sendMultipartTextMessage(telephone, null, parts, null, null);