0

更新:如果我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 权限

4

1 回答 1

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();
    }
}
于 2018-09-27T09:57:49.273 回答