简体   繁体   English

使用SmsManager从内部类发送SMS不起作用

[英]Sending SMS from inner class using SmsManager is not working

UPDATE: if I take sendSms() function outside the inner class it works! 更新:如果我将sendSms()函数sendSms()内部类之外,它将起作用! but I need it inside. 但是我需要里面 Can someone help? 有人可以帮忙吗?

I'm trying to send sms in backgroud using SmsManager and nothing happens. 我正在尝试使用SmsManager在backgroud中发送短信, SmsManager没有任何反应。 when I go to Logcat it says: 当我去Logcat时说:

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

I've tested it on both emulator and real device 我已经在模拟器和真实设备上进行了测试

This is a part of MainActivity.java : 这是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);
 }

The Toast is being showed and I have also printed sender and messageText and it prints what it should print so this is not the problem. 正在显示Toast,并且我还打印了sendermessageText ,并打印了应打印的内容,所以这不是问题。 I have been looking for this error and tried to clean project, rebuild, exit android and nothing worked. 我一直在寻找此错误,并尝试清理项目,重建,退出android,但没有任何效果。

I have included SEND_SMS permission in Manifest 我已在清单中包含SEND_SMS权限

Try This: 尝试这个:

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();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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