牙叔教程 简单易懂
选择来电联系人的三种方式
- 通讯录选择
- 通讯录随机
- 自己填写名字和电话
通讯录选择
第一步:判断通讯录读取权限, 有则继续,无则申请
verifyStoragePermissions(); /* -------------------------------------------------------------------------- */ function verifyStoragePermissions() { let READ_CONTACTS_requestCode = 1; let PERMISSIONS_STORAGE = ["android.permission.READ_CONTACTS"]; try { //检测是否有权限 let permission = Packages.androidx.core.app.ActivityCompat.checkSelfPermission( activity, "android.permission.READ_CONTACTS" ); if (permission != android.content.pm.PackageManager.PERMISSION_GRANTED) { // 没有权限,去申请权限,会弹出对话框 Packages.androidx.core.app.ActivityCompat.requestPermissions( activity, PERMISSIONS_STORAGE, READ_CONTACTS_requestCode ); } else { log("有读写通讯录权限"); } } catch (e) { log(e); } }
第二步:打开联系人列表
let intent = new Intent(); intent.setAction("android.intent.action.PICK"); intent.addCategory("android.intent.category.DEFAULT"); intent.setType("vnd.android.cursor.dir/phone_v2"); activity.startActivityForResult(intent, 1);
第三步:写监听, 接收联系人选择结果
这要求我们先写监听, 再打开联系人界面;
const READ_CONTACTS_CODE = 123; ui.emitter.on("activity_result", (requestCode, resultCode, data) => { if (requestCode == READ_CONTACTS_CODE) { if (resultCode == android.app.Activity.RESULT_OK) { let uri = data.getData(); let phoneNum = null; let contactName = null; // 创建内容解析者 let contentResolver = context.getContentResolver(); let cursor = null; if (uri != null) { cursor = contentResolver.query(uri, ["display_name", "data1"], null, null, null); } while (cursor.moveToNext()) { contactName = cursor.getString( cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME) ); phoneNum = cursor.getString( cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER) ); } cursor.close(); // 把电话号码中的 - 符号 替换成空格 if (phoneNum != null) { phoneNum = phoneNum.replace(/\-/g, " "); phoneNum = phoneNum.replace(/ /g, ""); } log("联系人: " + contactName + ", " + phoneNum); } } });
环境
设备:小米11pro
Android版本: 12
Autojs版本: 9.1.22
名人名言
思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 --- 牙叔教程
声明
部分内容来自网络 本教程仅用于学习, 禁止用于其他用途