简体   繁体   中英

failed to send SMS in android app

I was trying to write an app to send a SMS when a button clicked. so I wrote a class that implements OnClickListener interface and in the onClick methode I wrote this code:

         PendingIntent pi = PendingIntent.getActivity(context, 0,
     new Intent(context, ContactsActivity.class), 0);
     SmsManager sms = SmsManager.getDefault();
     sms.sendTextMessage(number, null, text, pi, null);

in here context is the activity that I got an instance of my OnClickListener. so my app crashes in the last line!!

I even putted:

        number = number.replace(" ", "");
    number = number.replace("-", "");

before the code to make the number that I've got from contact list look correct! but didn't help!

and I've checked my number is correct!

ps I added these permissions to the manifest:

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

UPDATE: log details:

01-26 21:01:39.959: E/AndroidRuntime(6470): FATAL EXCEPTION: main 01-26 21:01:39.959: E/AndroidRuntime(6470): java.lang.IllegalArgumentException: Invalid message body 01-26 21:01:39.959: E/AndroidRuntime(6470): at 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): at android.view.View.performClick(View.java:4240) 01-26 21:01:39.959: E/AndroidRuntime(6470): at android.view.View$PerformClick.run(View.java:17721) 01-26 21:01:39.959: E/AndroidRuntime(6470): at android.os.Handler.handleCallback(Handler.java:730) 01-26 21:01:39.959: E/AndroidRuntime(6470): at android. os.Handler.dispatchMessage(Handler.java:92) 01-26 21:01:39.959: E/AndroidRuntime(6470): at android.os.Looper.loop(Looper.java:137) 01-26 21:01:39.959: E/AndroidRuntime(6470): at 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)

thanks in advance.

The sendTextMessage method will throw an IllegalArgumentException if the first or third parameter is empty.

As seen in the documentation...

public void sendTextMessage (String destinationAddress, String scAddress,
String text, PendingIntent sentIntent, PendingIntent deliveryIntent)

Throws
IllegalArgumentException    if destinationAddress or text are empty

Ensure that the the first and third parameters are not empty. Thatis most likely the problem.

In your question you have said you made sure your number variable is correct. In that case, your text variable must be empty. Post your declaration of it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM