android:我多久可以发送短信

标签 android sms broadcastreceiver smsmanager

通过以下方式发送短信:

SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentPI, null);

被系统缓冲了?
我可以立即以同样的方式发送下一条短信吗?或者我必须等待:

PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0);  

registerReceiver(new BroadcastReceiver(){
    @Override
    public void onReceive(Context arg0, Intent arg1) {
        switch (getResultCode())
        {   case Activity.RESULT_OK:
//              ***next SMS ready to SEND***
                break;
            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                break;
            case SmsManager.RESULT_ERROR_NO_SERVICE:
                break;
            case SmsManager.RESULT_ERROR_NULL_PDU:
                break;
            case SmsManager.RESULT_ERROR_RADIO_OFF:
                break;
        }
    }
}, new IntentFilter(SENT));

最佳答案

您可以发送多条短信,而无需等待 SENT/DELIVERD 回调。然而,为了防止使用设备发送垃圾短信,SmsManager 的大多数实现只允许在一段时间内 Y 发送 X 条消息。为了防止这种保护机制启动,您不应该在短时间内发送大量消息.

如果您想连续发送 2 或 3 条消息,这不是问题。但如果您要发送数十或数百封邮件,那么您可能应该在每封邮件之间添加 30 到 60 秒的时间延迟。

请注意,每个硬件供应商的此行为的实现可能有所不同。

关于android:我多久可以发送短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30215246/

相关文章:

android - 从 Android 向 node.js 服务器发送带有 JSON 的 POST 请求

c# - 使用 SmsManager 打开默认的短信应用

android - 短信广播接收器 - 如何在短信被默认消息应用程序读取之前阻止/删除短信

android - 在后台持续运行 BroadcastReceiver 以监控网络状态。

php - Android PHP 查询不起作用

android - Scout SDK 2.5 : Map cache, 控制并提供离线搜索?

android - Android 运行线程类方法内的 sendBroadcast 编译错误

android - 是否可以通过 intent-filter 和 broadcastreceiver 获取剪贴板管理器?

android - Flutter 应用程序未在运行时启动

java - Android 将字符串写入广播接收器中的文件