我试图编写一个应用程序,在点击按钮时发送短信。 所以我写了一个实现OnClickListener接口的类,在onClick方法中我编写了这段代码:
PendingIntent pi = PendingIntent.getActivity(context, 0,
new Intent(context, ContactsActivity.class), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(number, null, text, pi, null);
在这里上下文是我获得了OnClickListener实例的活动。 所以我的应用程序在最后一行崩溃了!!
我甚至推了推: number = number.replace(" ", "");
number = number.replace("-", "");
在代码之前使我从联系人列表中获得的数字看起来正确!但没有帮助!
我检查过我的号码是否正确!
P.S。我将这些权限添加到清单中:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
更新: 记录详细信息:
01-26 21:01:39.959:E / AndroidRuntime(6470):致命异常:主要 01-26 21:01:39.959:E / AndroidRuntime(6470):java.lang.IllegalArgumentException:无效的邮件正文 01-26 21:01:39.959:E / AndroidRuntime(6470):在android.telephony.SmsManager.sendTextMessage(SmsManager.java:82) 01-26 21:01:39.959:E / AndroidRuntime(6470):at com.saeedFri.groupsms.SendClickListeneer.sendSMS(SendClickListeneer.java:58) 01-26 21:01:39.959:E / AndroidRuntime(6470):at com.saeedFri.groupsms.SendClickListeneer.sendSMSes(SendClickListeneer.java:38) 01-26 21:01:39.959:E / AndroidRuntime(6470):at com.saeedFri.groupsms.SendClickListeneer.onClick(SendClickListeneer.java:32) 01-26 21:01:39.959:E / AndroidRuntime(6470):在android.view.View.performClick(View.java:4240) 01-26 21:01:39.959:E / AndroidRuntime(6470):在android.view.View $ PerformClick.run(View.java:17721) 01-26 21:01:39.959:E / AndroidRuntime(6470):在android.os.Handler.handleCallback(Handler.java:730) 01-26 21:01:39.959:E / AndroidRuntime(6470):在android.os.Handler.dispatchMessage(Handler.java:92) 01-26 21:01:39.959:E / AndroidRuntime(6470):在android.os.Looper.loop(Looper.java:137) 01-26 21:01:39.959:E / AndroidRuntime(6470):在android.app.ActivityThread.main(ActivityThread.java:5103) 01-26 21:01:39.959:E / AndroidRuntime(6470):at java.lang.reflect.Method.invokeNative(Native Method) 01-26 21:01:39.959:E / AndroidRuntime(6470):at java.lang.reflect.Method.invoke(Method.java:525) 01-26 21:01:39.959:E / AndroidRuntime(6470):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737) 01-26 21:01:39.959:E / AndroidRuntime(6470):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 01-26 21:01:39.959:E / AndroidRuntime(6470):at dalvik.system.NativeStart.main(Native Method)
提前感谢。
答案 0 :(得分:4)
如果第一个或第三个参数为空,sendTextMessage
方法将抛出IllegalArgumentException
。
如文档中所示......
public void sendTextMessage (String destinationAddress, String scAddress,
String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
Throws
IllegalArgumentException if destinationAddress or text are empty
确保第一个和第三个参数不为空。这很可能就是问题所在。
在您提出的问题中,您说过您确保number
变量是正确的。在这种情况下,您的text
变量必须为空。张贴你的声明。