非法参数异常:发送短信时无效的邮件正文
问题描述:
我试图创建一个服务,发送包含当前wifi使用情况的短信但是我不断收到一个错误,指出“非法参数异常:无效邮件正文”。非法参数异常:发送短信时无效的邮件正文
有什么建议吗?
SOURCE:
public class Alarm extends Service {
@Override
public void onCreate() {
// TODO Auto-generated method stub
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
String info = "";
String sms = info;
info += "Monthly Wifi Data Usage Amount:\t";
info += ("\tReceived: " + TrafficStats.getTotalRxBytes() + " bytes/"
+ TrafficStats.getTotalRxPackets() + " packets\n");
info += ("\tTransmitted: " + TrafficStats.getTotalTxBytes()
+ " bytes/" + TrafficStats.getTotalTxPackets() + " packets\n");
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("9545555555", null, sms, null, null);
}
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
return super.onUnbind(intent);
}
}
logcat的:
@Override
public void onCreate() {
// TODO Auto-generated method stub
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
String phoneNumber = "9545555555";
String sms = "";
// String sms = info;
sms += "Monthly Wifi Data Usage Amount:\t";
sms += ("\tReceived: " + TrafficStats.getTotalRxBytes() + " bytes/"
+ TrafficStats.getTotalRxPackets() + " packets\n");
sms += ("\tTransmitted: " + TrafficStats.getTotalTxBytes()
+ " bytes/" + TrafficStats.getTotalTxPackets() + " packets\n");
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("9545555555", null, sms, null, null);
}
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
return super.onUnbind(intent);
}
}
修订的logcat(AFTER第一响应)
06-12 16:32:49.645: E/AndroidRuntime(31197): FATAL EXCEPTION: main
06-12 16:32:49.645: E/AndroidRuntime(31197): java.lang.RuntimeException: Unable to start service [email protected] with Intent { flg=0x4 cmp=com.example.wifimonitor/.Alarm (has extras) }: java.lang.NullPointerException
06-12 16:32:49.645: E/AndroidRuntime(31197): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2549)
06-12 16:32:49.645: E/AndroidRuntime(31197): at android.app.ActivityThread.access$2000(ActivityThread.java:139)
06-12 16:32:49.645: E/AndroidRuntime(31197): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
06-12 16:32:49.645: E/AndroidRuntime(31197): at android.os.Handler.dispatchMessage(Handler.java:99)
06-12 16:32:49.645: E/AndroidRuntime(31197): at android.os.Looper.loop(Looper.java:137)
06-12 16:32:49.645: E/AndroidRuntime(31197): at android.app.ActivityThread.main(ActivityThread.java:4918)
06-12 16:32:49.645: E/AndroidRuntime(31197): at java.lang.reflect.Method.invokeNative(Native Method)
06-12 16:32:49.645: E/AndroidRuntime(31197): at java.lang.reflect.Method.invoke(Method.java:511)
06-12 16:32:49.645: E/AndroidRuntime(31197): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
06-12 16:32:49.645: E/AndroidRuntime(31197): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
06-12 16:32:49.645: E/AndroidRuntime(31197): at dalvik.system.NativeStart.main(Native Method)
06-12 16:32:49.645: E/AndroidRuntime(31197): Caused by: java.lang.NullPointerException
06-12 16:32:49.645: E/AndroidRuntime(31197): at android.os.Parcel.readException(Parcel.java:1431)
06-12 16:32:49.645: E/AndroidRuntime(31197): at android.os.Parcel.readException(Parcel.java:1379)
06-12 16:32:49.645: E/AndroidRuntime(31197): at com.android.internal.telephony.ISms$Stub$Proxy.sendText(ISms.java:714)
06-12 16:32:49.645: E/AndroidRuntime(31197): at android.telephony.SmsManager.sendTextMessage(SmsManager.java:203)
06-12 16:32:49.645: E/AndroidRuntime(31197): at com.example.wifimonitor.Alarm.onStart(Alarm.java:44)
06-12 16:32:49.645: E/AndroidRuntime(31197): at android.app.Service.onStartCommand(Service.java:450)
06-12 16:32:49.645: E/AndroidRuntime(31197): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2532)
06-12 16:32:49.645: E/AndroidRuntime(31197): ... 10 more
:
06-12 15:53:42.395: E/AndroidRuntime(29664): FATAL EXCEPTION: main
06-12 15:53:42.395: E/AndroidRuntime(29664): java.lang.RuntimeException: Unable to start service [email protected] with Intent { flg=0x4 cmp=com.example.wifimonitor/.Alarm (has extras) }: java.lang.IllegalArgumentException: Invalid message body
06-12 15:53:42.395: E/AndroidRuntime(29664): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2549)
06-12 15:53:42.395: E/AndroidRuntime(29664): at android.app.ActivityThread.access$2000(ActivityThread.java:139)
06-12 15:53:42.395: E/AndroidRuntime(29664): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
06-12 15:53:42.395: E/AndroidRuntime(29664): at android.os.Handler.dispatchMessage(Handler.java:99)
06-12 15:53:42.395: E/AndroidRuntime(29664): at android.os.Looper.loop(Looper.java:137)
06-12 15:53:42.395: E/AndroidRuntime(29664): at android.app.ActivityThread.main(ActivityThread.java:4918)
06-12 15:53:42.395: E/AndroidRuntime(29664): at java.lang.reflect.Method.invokeNative(Native Method)
06-12 15:53:42.395: E/AndroidRuntime(29664): at java.lang.reflect.Method.invoke(Method.java:511)
06-12 15:53:42.395: E/AndroidRuntime(29664): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
06-12 15:53:42.395: E/AndroidRuntime(29664): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
06-12 15:53:42.395: E/AndroidRuntime(29664): at dalvik.system.NativeStart.main(Native Method)
06-12 15:53:42.395: E/AndroidRuntime(29664): Caused by: java.lang.IllegalArgumentException: Invalid message body
06-12 15:53:42.395: E/AndroidRuntime(29664): at android.telephony.SmsManager.sendTextMessage(SmsManager.java:119)
06-12 15:53:42.395: E/AndroidRuntime(29664): at com.example.wifimonitor.Alarm.onStart(Alarm.java:59)
06-12 15:53:42.395: E/AndroidRuntime(29664): at android.app.Service.onStartCommand(Service.java:450)
06-12 15:53:42.395: E/AndroidRuntime(29664): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2532)
06-12 15:53:42.395: E/AndroidRuntime(29664): ... 10 more
EDIT FIRST响应之后
答
由于空消息,您得到了该错误。
这:
String info = "";
String sms = info;
下面的代码后,info
和sms
是相同的。但是,在执行此操作之后:
info += "Monthly Wifi Data Usage Amount:\t";
一个新的String被创建并分配给info
,所以info
和sms
是不一样了。 sms
仍然是空的,这就是为什么你得到IllegalArgumentException。
只需在您的代码中删除info
,并且只使用sms
变量。您还可以使用 StringBuilder
我尝试了建议的方法(我加了上面的更新源代码),但现在我结束了一个空指针异常(谢谢你的帮助BTW!) –
@ user2478682大概短信太大了。尝试使用较小来检查它。 – andrew
就是这样!谢谢你,先生!! –