短信息
通过此类,我们可以获取到手机设备中的短信息。
from ascript.android import sms
注意事项
- 使用短信 API 前,请确保已经获取了读短信权限。
- 重要:请前往应用的辅助权限设置中开启短信相关权限,否则 API 可能无法正常工作。
- 频繁查询短信可能会影响应用性能,建议合理使用查询参数,避免一次性查询过多短信。
- 短信内容可能包含敏感信息,请妥善处理和保护用户隐私。
类型常量
| 常量名 | 值 | 描述 |
|---|---|---|
sms.TYPE_INBOX | 1 | 收件箱类型 |
sms.TYPE_SENT | 2 | 已发送类型 |
sms.TYPE_DRAFT | 3 | 草稿箱类型 |
方法
检查权限
检查是否有读短信权限。
- 函数
sms.has_permission():
-
返回值
-
bool- 是否有读短信权限 -
示例
# 检查是否有短信权限
from ascript.android import sms
if sms.has_permission():
print("有短信权限")
else:
print("无短信权限")
申请权限
拉起权限申请页。
- 函数
sms.request_permission():
-
返回值
-
无
-
示例
# 申请短信权限
from ascript.android import sms
if not sms.has_permission():
sms.request_permission()
获取第一条短信
获取第一条短信。
- 函数
sms.get_first():
-
返回值
-
Optional[Dict[str, Any]]- 短信信息字典,无短信时返回None -
示例
# 获取第一条短信
from ascript.android import sms
first_sms = sms.get_first()
print(f"第一条短信: {first_sms}")
获取收件箱第一条短信
获取收件箱第一条短信。
- 函数
sms.get_first_inbox():
-
返回值
-
Optional[Dict[str, Any]]- 短信信息字典,无短信时返回None -
示例
# 获取收件箱第一条短信
from ascript.android import sms
first_inbox = sms.get_first_inbox()
print(f"收件箱第一条短信: {first_inbox}")
获取已发送第一条短信
获取已发送第一条短信。
- 函数
sms.get_first_sent():
-
返回值
-
Optional[Dict[str, Any]]- 短信信息字典,无短信时返回None -
示例
# 获取已发送第一条短信
from ascript.android import sms
first_sent = sms.get_first_sent()
print(f"已发送第一条短信: {first_sent}")
获取最近 N 条短信
获取最近 N 条短信。
- 函数
sms.get_recent(count: int = 10):
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| count | int | 否 | 要获取的短信数量,默认 10 |
-
返回值
-
List[Dict[str, Any]]- 短信信息字典列表 -
示例
# 获取最近 5 条短信
from ascript.android import sms
recent_sms = sms.get_recent(5)
print(f"最近 5 条短信: {recent_sms}")
获取收件箱最近 N 条短信
获取收件箱最近 N 条短信。
- 函数
sms.get_recent_inbox(count: int = 10):
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| count | int | 否 | 要获取的短信数量,默认 10 |
-
返回值
-
List[Dict[str, Any]]- 短信信息字典列表 -
示例
# 获取收件箱最近 5 条短信
from ascript.android import sms
recent_inbox = sms.get_recent_inbox(5)
print(f"收件箱最近 5 条短信: {recent_inbox}")
按号码查询短信
按号码查询短信。
- 函数
sms.get_by_address(address: str, limit: int = 100):
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| address | str | 是 | 手机号码 |
| limit | int | 否 | 查询结果数量限制,默认 100 |
-
返回值
-
List[Dict[str, Any]]- 短信信息字典列表 -
示例
# 按号码查询短信
from ascript.android import sms
sms_by_address = sms.get_by_address("10086", 10)
print(f"来自 10086 的短信: {sms_by_address}")
灵活查询短信
灵活查询短信。
- 函数
sms.query(sms_type: Optional[int] = None, address: Optional[str] = None, limit: int = 0, order_desc: bool = True, offset: int = 0):
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| sms_type | Optional[int] | 否 | 短信类型,可选值为 TYPE_INBOX、TYPE_SENT、TYPE_DRAFT,为 None 时查询所有类型 |
| address | Optional[str] | 否 | 手机号码,为 None 时查询所有号码 |
| limit | int | 否 | 查询结果数量限制,0 表示无限制 |
| order_desc | bool | 否 | 是否按时间倒序排列,默认 True |
| offset | int | 否 | 跳过前 N 条(从 0 开始),用于分页 |
-
返回值
-
List[Dict[str, Any]]- 短信信息字典列表 -
示例
# 查询所有收件箱短信,按时间倒序,限制 20 条
from ascript.android import sms
inbox_sms = sms.query(sms_type=sms.TYPE_INBOX, limit=20)
print(f"收件箱短信: {inbox_sms}")
# 分页查询,获取第 21-40 条短信
page2_sms = sms.query(limit=20, offset=20)
print(f"第 2 页短信: {page2_sms}")
获取短信范围
获取第 start 条到第 end 条短信(含,1-based)。
- 函数
sms.get_range(start: int, end: int, sms_type: Optional[int] = None, address: Optional[str] = None):
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| start | int | 是 | 起始位置(从 1 开始) |
| end | int | 是 | 结束位置(包含) |
| sms_type | Optional[int] | 否 | 短信类型,可选值为 TYPE_INBOX、TYPE_SENT、TYPE_DRAFT,为 None 时查询所有类型 |
| address | Optional[str] | 否 | 手机号码,为 None 时查询所有号码 |
-
返回值
-
List[Dict[str, Any]]- 短信信息字典列表 -
示例
# 获取第 10-20 条短信
from ascript.android import sms
range_sms = sms.get_range(10, 20)
print(f"第 10-20 条短信: {range_sms}")
获取诊断信息
获取诊断信息。
- 函数
sms.debug_info():
-
返回值
-
dict- 诊断信息字典 -
示例
# 获取诊断信息
from ascript.android import sms
debug_info = sms.debug_info()
print(f"诊断信息: {debug_info}")