本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!
Auto.js 调用系统短信、电话
操作环境
- VS Code
- Google nexus5x
- Auto.js Pro 7.0.4
- win10调用系统短信模块
- 发送短信 ```python importClass(android.content.Intent); importClass(android.telephony.SmsManager);
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)
- 读取短信
```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复制```
- 监听短信
```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);
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->权限