liangji 发表于 2023-9-13 10:36

利用autoxjs 获取手机短信

因为有2个手机有时候出门不方便带,紧急时候需要收个验证码。所以突发奇想,能不能利用autoxjs写一个获取手机短信内容的demo。
在查阅多个资料后终于实现类似功能
var uri = android.net.Uri.parse("content://sms/inbox"); // 短信内容的 URI
var cursor = context.getContentResolver().query(uri, null, null, null, null); // 获取短信的游标
if (cursor != null && cursor.moveToFirst()) {
    for (var i = 0; i < cursor.getCount(); i++) { // 使用 for 循环逐条读取短信
      var bodyIndex = cursor.getColumnIndex("body"); // 短信内容在游标中的索引
      var senderIndex = cursor.getColumnIndex("address"); // 发送者号码在游标中的索引
      var dateIndex = cursor.getColumnIndex("date"); // 短信日期在游标中的索引
      var body = cursor.getString(bodyIndex); // 获取短信内容
      var sender = cursor.getString(senderIndex); // 获取发送者号码
      var dateMillis = cursor.getLong(dateIndex); // 获取短信日期的毫秒数
      var date = new Date(dateMillis); // 将毫秒数转换为日期对象
      var year = date.getFullYear();
      var month = (date.getMonth() + 1).toString().padStart(2, '0');
      var day = date.getDate().toString().padStart(2, '0');
      var hour = date.getHours().toString().padStart(2, '0');
      var minute = date.getMinutes().toString().padStart(2, '0');
      var second = date.getSeconds().toString().padStart(2, '0');
      var formattedDate = year + '年' + month + '月' + day + '日 ' + hour + '时' + minute + '分' + second + '秒';
      log("发送者: " + sender + ", 短信内容: " + body + ", 发送时间: " + formattedDate);
      if (!cursor.moveToNext()) { // 如果没有下一条短信了,就跳出循环
            break;
      }
    }
}

cursor.close();
以上代码放到VSCODE
手机上的autoxjs连接VSCODE(VSCODE需安装autoxjs插件,手机和电脑同一个网络,autoxjs要给予读取短信的权限)
按F5运行
最终运行效果如图

最后我们如果有服务器 可以将短信的内容发送到我们的服务器,或者推送到微信,从而实现远程接收家里手机短信的效果

hwj逆光飞翔 发表于 2023-9-14 16:45

师傅看看是不是这个,在github里面翻到的开源项目

https://github.com/pppscn/SmsForwarder

短信转发器——不仅只转发短信,备用机必备神器!
监控Android手机短信、来电、APP通知,并根据指定规则转发到其他手机:钉钉群自定义机器人、钉钉企业内机器人、企业微信群机器人、企业微信应用消息、飞书群机器人、飞书企业应用、邮箱、bark、webhook、Tele****机器人、Server酱、PushPlus、手机短信等。

hanghaidongchen 发表于 2023-9-13 12:35

有个问题:你是用远程的电脑连接家里的手机?那你怎么做连接同一网络?
如果你是家里的电脑连接家里的手机那怎么操控随时查看短信并发送服务器?
单纯有点没看懂这个逻辑,或者让autojs一直挂着读取短信,有新短信就推送(是这样的吗?)

iferencz 发表于 2023-9-13 11:52

为什么要造轮子呢{:301_982:}

whwh033 发表于 2023-9-13 11:58

iferencz 发表于 2023-9-13 11:52
为什么要造轮子呢

哪里有轮子?

liangji 发表于 2023-9-13 12:06

iferencz 发表于 2023-9-13 11:52
为什么要造轮子呢

因为要遥遥领先

将子拖走 发表于 2023-9-13 12:31

有开源软件的,支持各种方式转发,包括接口

tfl1 发表于 2023-9-13 12:52

感谢楼主分享

GMCN 发表于 2023-9-13 13:14

将子拖走 发表于 2023-9-13 12:31
有开源软件的,支持各种方式转发,包括接口

推荐一个

leetauy 发表于 2023-9-13 13:41

这个违法不?

fitgoodtea 发表于 2023-9-13 13:48

好像挺实用
页: [1] 2 3
查看完整版本: 利用autoxjs 获取手机短信