使用SmsManager从内部类发送SMS无效

时间:2018-09-27 09:36:26

标签: java android android-sms

更新:如果我将sendSms()函数带到内部类之外,它将起作用! 但是我需要里面有人可以帮忙吗?

我正在尝试使用SmsManager在背景中发送短信,但没有任何反应。当我去Logcat时说:

E/art: Failed sending reply to debugger: Broken pipe

我已经在模拟器和真实设备上对其进行了测试

这是MainActivity.java的一部分:

 SmsReceiver.bindListener(new SmsListener() {
     @Override
     public void messageReceived(String messageText, String sender) {
          if (msgClassifier.isUrgent(messageText, null, null)) {
               sendNotification(messageText);
          }
          else {
               if(sharedPrefs.getAutoReplyState(getApplication())){
                    Toast.makeText(MainActivity.this, "send sms", Toast.LENGTH_SHORT).show();
                    sendSms(sender,messageText);

               }

          }
     }
 });




 public void sendSms(String number, String msg){
     android.telephony.SmsManager smsManager = SmsManager.getDefault();
     smsManager.sendTextMessage(number,null,msg,null,null);
 }

正在显示Toast,并且我还打印了sendermessageText,并且打印了应该打印的内容,所以这不是问题。 我一直在寻找此错误,并尝试清理项目,重建,退出android并没有任何效果。

我已在清单中包含SEND_SMS权限

1 个答案:

答案 0 :(得分:0)

尝试一下:

public void sendSMS(String phoneNo, String msg) {
    try {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(phoneNo, null, msg, null, null);
        Toast.makeText(getApplicationContext(), "Message Sent",
                Toast.LENGTH_LONG).show();
    } catch (Exception ex) {
        Toast.makeText(getApplicationContext(),ex.getMessage().toString(),
                Toast.LENGTH_LONG).show();
        ex.printStackTrace();
    }
}