python获取本手机短信列表

本文介绍了一种通过USB或WiFi连接手机与电脑,利用Python的adbshell命令获取短信内容的方法,提取号码、时间、阅读状态等关键字段,并提供了相应的处理函数如deftimeStamp和adb_sms_list来解析和筛选短信。
摘要由CSDN通过智能技术生成

原理是:手机与电脑采用usb线缆相连(或wifi相连),利用adb shell命令获取所有短信(仅取每条短信的主要几个字段:号码、时间、阅读标志、类型、内容)。自己再根据需要查找短信。

【解决方案】

def timeStamp(timeNum):
    import datetime
    timeStamp1 = float(timeNum) / 1000
    dt = datetime.datetime.fromtimestamp(timeStamp1)
    return dt

def adb_sms_list():
    import os
    sms_cmd = 'adb shell content query --uri content://sms/'
    # 读取手机通话记录 adb shell content query --uri content://call_log/calls
    ret = os.popen(sms_cmd)
    size_str = ret.buffer.read().decode('utf-8')
    # print(size_str)

    sms_list = size_str.split('Row:')

    print(f'短信列表原始长度{len(sms_list)}')

    # print(sms_list[0], sms_list[1], sms_list[2], sms_list[3], sms_list[-3], sms_list[-2], sms_list[-1])

    sms_list2 = []
    for sms in sms_list:
        item_list = sms.split(',')
        a1 = {}
        for item in item_list:
            if ' address' in item:
                a1['address'] = item.replace('address=', '').strip()
            elif ' date=' in item:
                a1['date'] = timeStamp(item.replace('date=', '').strip())
            elif ' read' in item:
                a1['read'] = item.replace('read=', '').strip()
            elif ' type' in item:
                a1['type'] = item.replace('type=', '').strip()
            elif ' body' in item:
                a1['body'] = item.replace('body=', '').strip()
        if a1:
            sms_list2.append(a1)
        else:
            print('异常短信为:', item_list)

    print('=' * 30)
    print(f'共获取正常短信{len(sms_list2)}条')

    if len(sms_list2) > 0:
        return sms_list2
    else:
        return None

s3 = adb_sms_list()

print(s3)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值