无法在Android应用程序中发送短信

时间:2014-03-22 00:06:41

标签: android sms

我试图编写一个应用程序,在点击按钮时发送短信。 所以我写了一个实现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)

提前感谢。

1 个答案:

答案 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变量必须为空。张贴你的声明。