Auto.js 调用系统短信、电话

2022-03-29 22:32:14 浏览数 (1)

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!

Auto.js 调用系统短信、电话

操作环境

  • VS Code
  • Google nexus5x
  • Auto.js Pro 7.0.4
  • win10调用系统短信模块
  • 发送短信 ```python importClass(android.content.Intent); importClass(android.telephony.SmsManager);
代码语言:txt复制
StringBuilder = java.lang.StringBuilder;
代码语言:txt复制
Uri = android.net.Uri;
代码语言:txt复制
ArrayList = java.util.ArrayList;
代码语言:txt复制
List = java.util.List;
代码语言:txt复制
Context = android.content.Context;
代码语言:txt复制
SimpleDateFormat=java.text.SimpleDateFormat;
代码语言:txt复制
Date=java.util.Date;
代码语言:txt复制
Long=java.lang.Long;
代码语言:txt复制
var MessageInfo;
代码语言:txt复制
var list;
代码语言:txt复制
console.show();
代码语言:txt复制
var smsManager = android.telephony.SmsManager.getDefault();
代码语言:txt复制
smsManager.sendTextMessage("13888888888", null, "123123",  null, null);
代码语言:txt复制
toast('短信发送成功')
代码语言:txt复制
console.info('短信发送成功')
代码语言:txt复制
```
代码语言:txt复制
![请添加图片描述](https://img-blog.csdnimg.cn/8dc7a05283e64dc78edb963b38404598.gif)
  • 读取短信
代码语言:txt复制
```bash
代码语言:txt复制
importClass(android.net.Uri);
代码语言:txt复制
importClass(android.database.Cursor);
代码语言:txt复制
importClass(android.content.ContentResolver);
代码语言:txt复制
var SMS_INBOX = Uri.parse( "content://sms/" );
代码语言:txt复制
var cr = context.getApplicationContext().getContentResolver();
代码语言:txt复制
var projection=new Array("_id" ,  "address" ,  "person" , "body" ,  "date" ,  "type" );
代码语言:txt复制
var cur = cr.query(SMS_INBOX, projection,  null ,  null ,  "date desc" );
代码语言:txt复制
var i=0;
代码语言:txt复制
while (cur.moveToNext()) {
代码语言:txt复制
    i=i 1;
代码语言:txt复制
    var number = cur.getString(cur.getColumnIndex("address"));//手机号 
代码语言:txt复制
    var name = cur.getString(cur.getColumnIndex("person"));//联系人姓名列表 
代码语言:txt复制
    var body = cur.getString(cur.getColumnIndex("body"));//短信内容
代码语言:txt复制
    toastLog(number);
代码语言:txt复制
    toastLog(name);
代码语言:txt复制
    toastLog(body);
代码语言:txt复制
    if(i>10){break;}
代码语言:txt复制
}
代码语言:txt复制
```
  • 监听短信
代码语言:txt复制
```bash
代码语言:txt复制
importPackage(android.content);
代码语言:txt复制
importClass(android.telephony.SmsMessage);
代码语言:txt复制
var filter=new IntentFilter();
代码语言:txt复制
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
代码语言:txt复制
var receiver = new JavaAdapter(android.content.BroadcastReceiver, {
代码语言:txt复制
  onReceive : function(context, intent) {
代码语言:txt复制
    var sender = null;
代码语言:txt复制
    var bundle = intent.getExtras();
代码语言:txt复制
    var format = intent.getStringExtra("format");
代码语言:txt复制
    if (bundle != null) {
代码语言:txt复制
        var pdus = bundle.get("pdus");
代码语言:txt复制
        for (object in pdus) {
代码语言:txt复制
          var message=SmsMessage.createFromPdu(pdus[object],format);
代码语言:txt复制
          sender = message.getOriginatingAddress();
代码语言:txt复制
          messageBody = (message.getMessageBody());
代码语言:txt复制
          log("发信人: "   replacepos(sender, 6, 9, "****"));
代码语言:txt复制
          log("短信内容: "   messageBody);
代码语言:txt复制
        }
代码语言:txt复制
    }
代码语言:txt复制
  }
代码语言:txt复制
});
代码语言:txt复制
context.registerReceiver(receiver,filter);
代码语言:txt复制
setInterval(()=>{},1000);
代码语言:txt复制
events.on("eixt", function () {
代码语言:txt复制
  context.unregisterReceiver(receiver);
代码语言:txt复制
})
代码语言:txt复制
function replacepos(text,start,stop,replacetext) {
代码语言:txt复制
  mystr = text.substring(0,start) replacetext text.substring(stop 1);
代码语言:txt复制
  return mystr;
代码语言:txt复制
}
代码语言:txt复制
```

调用系统电话模块

  • 调用intent拨打电话 ```bash function call(context,id, telNum){ // id starts from zero to one importClass(android.content.Intent); importClass(android.net.Uri); importClass(android.content.Context); importClass(android.telecom.TelecomManager); let telecomManager = context.getSystemService(Context.TELECOM_SERVICE);
代码语言:txt复制
if(telecomManager != null){
代码语言:txt复制
    let phoneAccountHandleList = telecomManager.getCallCapablePhoneAccounts();
代码语言:txt复制
    let intent = new Intent();
代码语言:txt复制
    intent.setAction(Intent.ACTION_CALL);
代码语言:txt复制
    intent.setData(Uri.parse("tel:"   telNum));
代码语言:txt复制
        intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandleList.get(id));
代码语言:txt复制
        app.startActivity(intent);
代码语言:txt复制
    }
代码语言:txt复制
}
代码语言:txt复制
call(context,0,12345678910)
代码语言:txt复制
```

PS:需要先开权限,没有权限会报错Permission denied

开启权限:设置->应用和通知->Auto.js Pro->权限

0 人点赞