0

我发现 SmsManager 文档中的位置并不完全清楚。

SmsManager 类,sendTextMessage 方法,sentIntent 参数(http://developer.android.com/reference/android/telephony/SmsManager.html):

The per-application based SMS control checks sentIntent. If 
sentIntent is NULL the caller will be checked against all 
unknown applications, which cause smaller number of SMS to 
be sent in checking period.

这是什么意思?将执行什么控制?它执行谁(什么组件)?什么是已知和未知的应用程序?检查结果可能是什么?

4

2 回答 2

0

在给定的时间段内,应用程序可以发送多少条短信是有限制的。它是在SmsUsageMonitor(至少在 Android 4.x 中)实现的。

例如,看一下 SmsUsageMonitor.check(String appName, int smsWaiting):

 public boolean More ...check(String appName, int smsWaiting) {
     /* ... */ 
     return isUnderLimit(sentList, smsWaiting);
 }

如您所见,有一个应用程序发送的短信列表。isUnderLimit()只需检查此列表是否不超过限制。

于 2013-08-01T10:03:08.170 回答
0

此文本指的是 sentIntent。在 android 操作系统中,应用程序在每次未经用户许可的情况下发送短信都有一些合理的限制。如果超过这些限制,则会向用户显示发送 SMS 权限的对话框。通常每个应用程序都会计算限制,但是如果您不设置 sentIntent 则SmsUsageMonitor班级无法知道发送 SMS 请求来自哪个应用程序,因此它将计算您的应用程序限制以及其他未设置的应用程序sentIntent 和限制会更小。因此,最好提供一个 sentIntent,即使它是一个虚拟的。

于 2014-07-13T10:35:55.743 回答