因为有2个手机有时候出门不方便带,紧急时候需要收个验证码。所以突发奇想,能不能利用autoxjs写一个获取手机短信内容的demo。
在查阅多个资料后终于实现类似功能
[JavaScript] 纯文本查看 复制代码 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运行
最终运行效果如图
最后我们如果有服务器 可以将短信的内容发送到我们的服务器,或者推送到微信,从而实现远程接收家里手机短信的效果 |