好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 Piz.liu 于 2022-4-12 11:06 编辑
在公司专门放了个手机用来钉钉打卡,但是手机里有卡,短信没办法实时转发给我,
所以用autojs写了个脚本,通过企业微信实时转发到我的微信里面, 需要的可以自取
昨天试了把未读短信设置为已读 一直不成功,找了很多方法也没用 (有知道的大佬希望告知一下), 所以临时设置了个ids 存放已经发送过的短信id ,避免重复发送
个别手机可能会报错应该是权限的异常,应该是没有授权读取短信的权限导致的,个别手机上没有弹出授权的提醒,
也不知道为什么,有知道的大神解释一下,不能换个手机试试,如果换手机可以,打个包,就行了
或者可以用24楼 朋友提供的 监听通知栏的方式获取信息试试
代码如下:
[JavaScript] 纯文本查看 复制代码
"ui";
ui.layout(
<vertical>
<horizontal>
<button id="开启短信监听" layout_width="0dp" layout_weight="1">
开启短信监听
</button>
<button id="关闭短信监听" layout_width="0dp" layout_weight="1">
关闭短信监听
</button>
</horizontal>
<button id="退出">退出</button>
<text id="messageToDisplay"></text>
</vertical>
);
importClass(android.net.Uri);
importClass(android.database.Cursor);
importClass(android.content.ContentResolver);
importClass(android.database.ContentObserver);
//定一个数组 保存已经发送的短信id 避免重复发送
var ids = []
var SMS_INBOX = Uri.parse("content://sms/inbox");
var cr = context.getApplicationContext().getContentResolver();
// type ALL = 0;
// INBOX = 1;
// SENT = 2;
// DRAFT = 3;
// OUTBOX = 4;
// FAILED = 5;
// QUEUED = 6;
var sendurl = ""
function getMsg() {
var cur = cr.query(
SMS_INBOX,
null,
"type = 1 and read = 0",
null,
"date desc"
);
log("未读短信数量:" + cur.getCount());
while (cur.moveToNext()) {
var id = cur.getString(cur.getColumnIndex("_id"));
var address = cur.getString(cur.getColumnIndex("address")); //发送人
var date = cur.getLong(cur.getColumnIndex("date")); //短信日期
var body = cur.getString(cur.getColumnIndex("body")); //短信内容
var date_str = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(
new Date(date)
);
var a = ids.indexOf(id);
if (a == -1) {
log("发件人:" + address);
log("时间:" + date_str);
log("内容:" + body);
sendWeiChat(address, date_str, body);
ids.push(id)
}
}
}
function createSmsObserver() {
log("创建监听");
let smsObserver = new JavaAdapter(
ContentObserver,
{
onChange: (self, uri) =>{
if (!uri.toString().equals(SMS_INBOX)) {
if (!uri.toString().equals(sendurl)) {
log("监听事件函数 onChangeFunction");
sendurl = uri.toString();
getMsg();
}
}
}
},
new android.os.Handler()
);
return smsObserver;
}
function sendWeiChat(address, date_str, body) {
let send_data =
"发件人:" +
address +
"\n" +
"发送时间:" +
date_str +
"\n" +
"短信内容:" +
"\n" +
body;
var corpid = "xxxx"; //企业id 自己改
var corpsecret = "xxx"; //应用secret 自己改
var HEADERS = { "Content-Type": "application/json ;charset=utf-8" };
var r = http.get(
"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" +
corpid +
"&corpsecret=" +
corpsecret,
{
headers: HEADERS,
}
);
var js = r.body.json();
var token = js.access_token;
var data = {
touser: "@all",
msgtype: "text",
agentid: 1000004, //应用id 自己改
text: { content: send_data },
safe: 0,
enable_id_trans: 0,
enable_duplicate_check: 0,
duplicate_check_interval: 1800,
};
var wechaturl =
"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + token;
http.postJson(wechaturl, data, { headers: HEADERS });
}
ui.开启短信监听.click(function () {
//获取权限
runtime.requestPermissions(["read_sms"]);
toastLog("开启短信监听");
ui.messageToDisplay.setText("开启短信监听");
smsObserver = createSmsObserver();
context
.getContentResolver()
.registerContentObserver(SMS_INBOX, true, smsObserver);
});
ui.关闭短信监听.click(function () {
toastLog("关闭短信监听");
ui.messageToDisplay.setText("关闭短信监听");
if (smsObserver) {
context.getContentResolver().unregisterContentObserver(smsObserver);
}
});
ui.退出.click(function () {
toastLog("退出");
ids = []
if (smsObserver) {
context.getContentResolver().unregisterContentObserver(smsObserver);
}
engines.myEngine().forceStop();
});
events.on("exit", function () {
log("退出事件");
if (smsObserver) {
log("取消监听");
context.getContentResolver().unregisterContentObserver(smsObserver);
}
});
|
免费评分
-
参与人数 8 | 吾爱币 +14 |
热心值 +6 |
收起
理由
|
寒狼
| + 1 |
+ 1 |
感谢发布原创作品,吾爱破解论坛因你更精彩! |
juejue
| + 1 |
+ 1 |
感谢发布原创作品,吾爱破解论坛因你更精彩! |
坚强的风儿
| + 1 |
+ 1 |
热心回复! |
樱夜幻
| + 1 |
+ 1 |
鼓励转贴优秀软件安全工具和文档! |
tgdq5
| + 1 |
|
用心讨论,共获提升! |
苏紫方璇
| + 7 |
+ 1 |
欢迎分析讨论交流,吾爱破解论坛有你更精彩! |
yy5630651
| + 1 |
+ 1 |
谢谢@Thanks! |
wkdxz
| + 1 |
|
用心讨论,共获提升! |
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|