开发者社区> 小凡晓宇> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

autojs选择来电联系人

简介: 牙叔教程 简单易懂
+关注继续查看

牙叔教程 简单易懂


选择来电联系人的三种方式

  • 通讯录选择
  • 通讯录随机
  • 自己填写名字和电话

通讯录选择

第一步:判断通讯录读取权限, 有则继续,无则申请

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文档, 最后才是群里问问 --- 牙叔教程


声明
部分内容来自网络 本教程仅用于学习, 禁止用于其他用途

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
autojs提词器
拍短视频 ● 忘词 ● 记不住台词 有了提词器, 就再也不怕忘词儿了
20 0
autojs解压apk
牙叔教程 简单易懂
18 0
autojs之koa
使用场景 手机上搭建服务器
22 0
autojs之彩色下拉框
作者: 牙叔 使用情景: 做个彩色下拉框
29 0
autojs加载中界面
牙叔教程 简单易懂
23 0
autojs之递归
概念 递归递归, 先递后归 递无可递, 速速归来, 急急如律令!!!
19 0
autojs之ocr-百度
使用情景 安卓手机调用百度ocr识别文字
17 0
RabbitMQ精讲1:主流MQ对比,为什么选择RabbitMQ
RabbitMQ精讲1:主流MQ对比,为什么选择RabbitMQ
236 0
iOS关于UITableView选择Cell方法
选择cell有两个方法,今天搞错了,一直以为cell错乱呢,真是人都有掉坑的时候: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)in...
538 0
+关注
329
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载