Android SMSManager返回结果\u错误\u一般\u失败,尽管尝试了所有操作

Android SMSManager返回结果\u错误\u一般\u失败,尽管尝试了所有操作,android,sms,smsmanager,Android,Sms,Smsmanager,我正在尝试在我的应用程序中创建一个功能,可以在后台向多个联系人发送短信。我正在使用SMS管理器API做同样的事情。但是,每次RESULT\u ERROR\u GENERIC\u FAILURE都会返回。我读了很多关于堆栈溢出的类似文章,并尝试了所有的解决方案,但似乎没有一个适合我。具体而言,我尝试了以下几点: 将电话号码格式更改为“+91XXXXXXXXX”、“9xxxxxxxxx”、“91XXXXXXXXX” 检查SIM卡余额 短信服务中心号码也有效 短信长度在160个字符以内 延迟发送多条短

我正在尝试在我的应用程序中创建一个功能,可以在后台向多个联系人发送短信。我正在使用
SMS管理器API
做同样的事情。但是,每次
RESULT\u ERROR\u GENERIC\u FAILURE
都会返回。我读了很多关于堆栈溢出的类似文章,并尝试了所有的解决方案,但似乎没有一个适合我。具体而言,我尝试了以下几点:

  • 将电话号码格式更改为“+91XXXXXXXXX”、“9xxxxxxxxx”、“91XXXXXXXXX”
  • 检查SIM卡余额
  • 短信服务中心号码也有效
  • 短信长度在160个字符以内
  • 延迟发送多条短信
  • 以下是我发送短信的方式:

    for (int index = 0; index < contactsList.size(); index++) {
                final String phonenumber = contactsList.get(index).getPhone().substring(1);
    
                if (index == 0) {
                    sendSMS(phonenumber.trim(), sms, contactsList);
                } else {
                    new Handler().postDelayed(new Runnable() {
                        public void run() {
    
                            sendSMS(phonenumber.trim(), sms, contactsList);
                        }
                    }, 1000 * 20);
                }
            }
    
    以下是我的相关清单权限:

    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    
    
    
    注意:我正在运行Android 6的真实设备上测试我的应用程序。我已检查运行时权限,并且已启用这些权限。


    谁能告诉我我做错了什么吗?

    你的代码是正确的。检查您是否有活动SIM卡以及卡中是否有余额。因为一般故障是来自服务提供商的响应。

    我找到了解决此问题的方法。对于双sim卡手机,有一个选项指定从哪个sim卡发送SMS。如果选项设置为“每次询问”,则会发生一般性故障。解决方案是将此选项设置为任一SIM卡。然而,我还没有找到程序化的方法来做到这一点。

    这可能是由于一条很大的消息。Android支持长消息的多部分sms,请尝试使用多部分sms

    SmsManager smsManager = SmsManager.getDefault();
    ArrayList<String> parts = smsManager.divideMessage(message);
    smsManager.sendMultipartTextMessage(phoneNo, null, parts, null, null);
    
    SmsManager-SmsManager=smsmsmanager.getDefault();
    ArrayList parts=smsmsmanager.divideMessage(消息);
    sendMultipartTextMessage(phoneNo,null,parts,null,null);
    
    对我来说,问题在于消息的内容,有特殊字符(如/r/n)

    (颤振解决方案)

    这解决了发送长短信的问题

    在您的pubspec.yaml中:

      sms_maintained:
        git:
          url: https://github.com/andreimc/flutter_sms.git
    

    我在这里找到它:

    我在上面相同的代码中遇到了同样的问题


    我尝试重新启动手机一次,然后再试一次。手机正常。

    我的sim卡处于活动状态,并且具有余额。我试着通过本机短信应用发送短信。我的手机是双卡的。会不会有问题?也许。。。如果SIM1未激活,则会出现此错误。我以前遇到过相同类型的问题…我的SIM2未激活。SIM1处于活动状态。是否有方法检测活动sim?否。我们可以检查网络是否可用,但没有活动/否的确切含义,因此我们无法激活sim并使用SmsManager发送。getSmsManagerForSubscriptionId(),在SDK=25的RedMi 4A上仍然出现错误。请告诉我如何在RedMi 4A上设置此选项
      sms_maintained:
        git:
          url: https://github.com/andreimc/flutter_sms.git