1

在我的应用程序中,我想向一堆号码发送大量短信,并且我想知道短信收件人列表是否有时间阈值或大小限制。

我在之前的问题中看到的只是当前 Android 版本中不再存在的代码,例如对 SMSDispatcher 和 Settings 常量的引用,这些常量不再存在于当前代码中。

4

3 回答 3

4

在浏览了我的应用程序支持的所有 API 的 Android 源代码后,我得到了以下代码

private void setSmsDefaultLimitations(){

    int apiLevel = Build.VERSION.SDK_INT;
    String versionRelease = Build.VERSION.RELEASE;

    switch(apiLevel){
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
        sMaxAllowed = 100;
        sCheckPeriod = 3600000;
        break;
    case 16:
        sMaxAllowed = 30;
        sCheckPeriod = 1800000;
        break;
    case 17:
        sMaxAllowed = 30;
        if(versionRelease.contains("4.2.2")){
            sCheckPeriod = 60000;
        }else {
            sCheckPeriod = 1800000;
        }
        break;
    case 18:
        sMaxAllowed = 30;
        sCheckPeriod = 60000;
        break;
    default:
        sMaxAllowed = 30;
        sCheckPeriod = 1800000;
        break;
    }
    sMaxAllowed = sMaxAllowed - 2; //This is to give us a little buffer to be extra safe (like a condom ;)
    Log.d(TAG, "maxAllowed = "+sMaxAllowed+"; checkPeriod = "+(sCheckPeriod/60000) + " minutes");
}
于 2014-10-23T13:26:06.620 回答
0

SMS 发送限制不迟于 Gingerbread 引入。据我所知,并且我彻底调查过,API 之间的限制各不相同,通常不可能在非 root 设备上覆盖这些限制。如果可能的话,这些都是罕见的例外。我认为目前的最低限度是 30 分钟内 30 条消息,但这可能会发生变化。谷歌是老板。

话虽如此,如果您的应用程序应该只从您的设备或从受控数量的设备发送消息,您可以通过生根设备然后将 SMS_OUTGOING_CHECK_MAX_COUNT 设置为一个巨大的数字(比如 99999)来解决这个问题:

  • /data/data/com.android.providers.settings/databases/settings.db
    1. 餐桌安全
    2. 系统
  • /data/data/com.google.android.gsf/databases/gservices.db

此外,如果您正在为单个 API 开发应用程序,您应该谷歌其特定限制。

于 2014-10-23T12:33:28.220 回答
-1

您可以通过 SMS 向个人发送的号码数量为 160。您可以使用 SmsManager 类方法的 sendMultiPartTextMessage()。

            EXAMPLES:

https://stackoverflow.com/a/3939791/254567

https://stackoverflow.com/a/6590782/254567

于 2013-09-29T14:32:18.283 回答