在我的应用程序中,我想向一堆号码发送大量短信,并且我想知道短信收件人列表是否有时间阈值或大小限制。
我在之前的问题中看到的只是当前 Android 版本中不再存在的代码,例如对 SMSDispatcher 和 Settings 常量的引用,这些常量不再存在于当前代码中。
在我的应用程序中,我想向一堆号码发送大量短信,并且我想知道短信收件人列表是否有时间阈值或大小限制。
我在之前的问题中看到的只是当前 Android 版本中不再存在的代码,例如对 SMSDispatcher 和 Settings 常量的引用,这些常量不再存在于当前代码中。
在浏览了我的应用程序支持的所有 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");
}
SMS 发送限制不迟于 Gingerbread 引入。据我所知,并且我彻底调查过,API 之间的限制各不相同,通常不可能在非 root 设备上覆盖这些限制。如果可能的话,这些都是罕见的例外。我认为目前的最低限度是 30 分钟内 30 条消息,但这可能会发生变化。谷歌是老板。
话虽如此,如果您的应用程序应该只从您的设备或从受控数量的设备发送消息,您可以通过生根设备然后将 SMS_OUTGOING_CHECK_MAX_COUNT 设置为一个巨大的数字(比如 99999)来解决这个问题:
此外,如果您正在为单个 API 开发应用程序,您应该谷歌其特定限制。
您可以通过 SMS 向个人发送的号码数量为 160。您可以使用 SmsManager 类方法的 sendMultiPartTextMessage()。
EXAMPLES:
https://stackoverflow.com/a/3939791/254567
和