封装公共函数

## 寻找节点是否存在 ``` /* @way:查找方式: text/desc/id/className @str:节点节点节点文本 @timeOut:查找超时的时间,默认1000毫秒。可空 */ log(findNode("text", /我/)) function findNode(way, str, timeOut) { if (!timeOut) { timeOut = 1000 } let result = false //点击结果 let object; if (way == "text") { object = textMatches(str).findOne(timeOut); log("找到 " + "[" + str + "]" + " 控件成功") } else if (way == "desc") { object = descMatches(str).findOne(timeOut); log("找到 " + "[" + str + "]" + " 控件成功") } else if (way == "id") { object = idMatches(str).findOne(timeOut); log("找到 " + "[" + str + "]" + " 控件成功") } else if (way == "className") { object = classNameMatches(str).findOne(timeOut); log("找到 " + "[" + str + "]" + " 控件成功") } else { log("Error:findNode-way参数不正确") } if (object != null) { result = true } else { // log("Error:findNode-组件不存在/没找到") } return result; }; ``` ## 点击节点中心点坐标 ``` /* @way:查找方式 @str:节点文本 @sleepTime:点击成功后的延时,默认1000毫秒。可空 */ // clickNodeR("id", "com.ss.android.ugc.aweme:id/dza") clickNodeR("text", /教程/) function clickNodeR(way, str, sleepTime) { if (!sleepTime) { sleepTime = 1000 } let result = false //点击结果 let object; if (way == "text") { object = textMatches(str).findOne(1000); log("找到 " + "[" + str + "]" + " 成功") } else if (way == "desc") { object = descMatches(str).findOne(1000); log("找到 " + "[" + str + "]" + " 成功") } else if (way == "id") { object = idMatches(str).findOne(1000); log("找到 " + "[" + str + "]" + " 成功") } else if (way == "className") { object = classNameMatches(str).findOne(1000); log("找到 " + "[" + str + "]" + " 成功") } else { log("Error:clickNodeR-way参数不正确") } if (object != null) { let x = object.bounds().centerX(); let y = object.bounds().centerY(); // log(x, y) if (x > 0 && y > 0) { result = click(parseInt(x), parseInt(y)); } else { log("Error:clickNodeR-中心点坐标不在可视区") } result && sleep(sleepTime); } else { log("Error:clickNodeR-节点不存在/没找到") } return result; }; ``` ## 点击节点 clickable为true执行 ``` /* 点击节点 clickable为true执行 @way:查找方式 @str:节点文本 @sleepTime:点击成功后的延时,默认1000毫秒。可不写 */ // clickNode("desc", /北京.+/) function clickNode(way, str, sleepTime) { if (!sleepTime) { sleepTime = 1000 } let result = false //点击结果 let object; if (way == "text") { object = textMatches(str).findOne(1000);//寻找组件 log("找到 " + "[" + str + "]" + " 成功") } else if (way == "desc") { object = descMatches(str).findOne(1000); log("找到 " + "[" + str + "]" + " 成功") } else if (way == "id") { object = idMatches(str).findOne(1000); log("找到 " + "[" + str + "]" + " 成功") } else if (way == "className") { object = classNameMatches(str).findOne(1000); log("找到 " + "[" + str + "]" + " 成功") } else { log("Error:clickNode-way参数不正确") } if (object != null) { if (object.clickable()) { result = object.click(); result && sleep(sleepTime);//简单写 相同于if下面这个 // if (result) { // sleep(sleepTime); // } } else { log("Error:clickNode-节点不可点击") } } else { log("Error:clickNode-节点不存在/没找到") } return result; }; ``` ## 写入手机通讯录 ``` importPackage(android.content); importPackage(java.io); importPackage(java.util); importClass(android.net.Uri); importClass(android.provider.Settings); importClass(android.content.pm.PackageManager); importClass(android.provider.ContactsContract); var 姓名 = "shuzi" var 手机号 = '1' // var 公私 addContact(姓名, 手机号) // function 通讯录任务() { // // if (jz_yun.配置信息.hasOwnProperty("使用私有库")) { // // 公私 = 1 // // } else { // // 公私 = 0 // // } // // logd(公私 ) // for (let i = 0; i < parseInt(jz_yun.配置信息.添加通讯录人数); i++) { // if (获取通讯录() == "空") { // return // } // logd("添加练习人:" + 姓名, 手机号) // addContact(姓名, 手机号) // sleep(2000) // } // } // function 清空通讯录() { // var cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); // while (cursor.moveToNext()) { // logd(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID))) // var rawId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); // var where = ContactsContract.Data._ID + " =?"; // var whereparams = [rawId]; // context.getContentResolver().delete(ContactsContract.RawContacts.CONTENT_URI, where, whereparams); // } // logd("已清空") // } // function 获取通讯录() { // let server_api = "47.121.127.72:16667" // url = "http://" + server_api + "/address/getOneaddress" // payload = { // "userName": 云控账号, // "device_id": 设备编号, // // "is_public": 公私 // // "userName": "cjroot", // // "device_id": "1", // } // logd(url) // var params = { // "url": url, // "method": "GET", // "data": payload, // } // var x = http.request(params) // if (x) { // x = JSON.parse(x.body) // logd(JSON.stringify(x)) // if (x.msg == "获取成功") { // 姓名 = x.data.name // logd(姓名) // 手机号 = x.data.phone // logd(手机号) // return true // } else { // logd("关键词为空") // toast("关键词为空") // return "空" // } // } else { // logd("无结果") // return "空" // } // } function addContact(name, phoneNumber) { var values = new ContentValues(); var rawContactUri = context.getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values); var rawContactId = ContentUris.parseId(rawContactUri); values.clear(); values.put(ContactsContract.Data.RAW_CONTACT_ID, new java.lang.Integer(rawContactId)); values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, name); context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); values.clear(); values.put(ContactsContract.Data.RAW_CONTACT_ID, new java.lang.Integer(rawContactId)); values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber); values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE); context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); values.clear(); //以下为插入e-mail信息,不需要可以注释掉 //    values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId); //    values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE); //    // 联系人的Email地址 //    values.put(ContactsContract.CommonDataKinds.Email.DATA, "zhangphil@xxx.com"); //    // 电子邮件的类型 //    values.put(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK); //    // 向联系人Email URI添加Email数据 //    context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); toast("联系人数据添加成功"); } ``` ### 正则匹配数字 ``` if (descMatches(/^\d{13,22}/).visibleToUser().findOnce()) { let 数字 = descMatches(/^\d{13,22}/).visibleToUser().findOnce() if (数字) { logd(数字.desc()) } } ```