UniAppx 跳转Android 系统通讯录

工作中遇到的问题浅浅记录一下

跳转方法

TypeScript 复制代码
	//跳转系统 通讯录
	function jumpContacts(tag : number) {
		const context = UTSAndroid.getUniActivity()!;
		const intent = new Intent(Intent.ACTION_PICK);
		intent.setData(Uri.parse("content://com.android.contacts/data/phones"));
		intent.setType("vnd.android.cursor.dir/phone_v2");
		context.startActivityForResult(intent, tag.toInt());
	}

回调监听

TypeScript 复制代码
	onLoad(() => {
		console.log("sun,onLoad");
		httpGetInfoData()

		UTSAndroid.onAppActivityResult((requestCode : Int, resultCode : Int, data : Intent | null) => {
			if (resultCode != -1) return;

			if (data == null) return;

			const context = UTSAndroid.getUniActivity()!;
			const contactData = data.getData();
			if (context == null || contactData == null) return;

			const contentResolver = context.getContentResolver();

			// const projection : Array<string> = [
			// 	"data1",     // 电话号码(Phone.NUMBER)
			// 	"display_name" // 显示名称(Phone.DISPLAY_NAME)
			// ];

			const cursor = contentResolver.query(contactData, null, null, null, null);

			let name = "";
			let number = "";

			if (cursor != null && cursor.moveToFirst()) {
				try {
					number = cursor.getString(cursor.getColumnIndexOrThrow("data1"));
					name = cursor.getString(cursor.getColumnIndexOrThrow("display_name"));

					// 清理电话号码中的空格和特殊字符
					number = number.replace(/[()\s\-+]/g, '');
				} catch (e) {
					console.error("读取联系人失败", e);
				} finally {
					cursor.close();
				}
			}
			console.log("name", name)
			console.log("number", number)

			if (requestCode == contact1Tag) {
				contact1.value = number;
				contact1Name.value = name;
			} else if (requestCode == contact2Tag) {
				contact2.value = number;
				contact2Name.value = name;
			}


		})
	});
相关推荐
应用市场2 小时前
用本机跑的开源音乐模型,给安卓小游戏做 20 秒无缝循环背景音乐
android·python·游戏开发·soundpool·音频处理
企业数字化笔记2 小时前
表单发布前怎么验收?版本引用、字段兼容和历史数据回归
android·数据挖掘·回归
生信分析笔记2 小时前
Nature 正刊 GPN-Star 基因组语言模型
android
渣渣盟2 小时前
Flink 状态管理深度剖析:从 KeyedState 到 RocksDB,状态如何存储、恢复与扩缩容
android·大数据·flink
avi91112 小时前
电影开源Jevdo - 源码介绍(vue版)没有android 和 没有wpf
android·wpf·框架·数据爬虫·meego·电影管理
OxYGC2 小时前
[工程] PHP2Shell 漏洞解析:两条 PHP 内核 RCE,为什么应用层的防护全部失效
android·开发语言·php
拥小抱18 小时前
Compose 知识点
android
文章永久免费只为良心18 小时前
Web应用安全与防护_第三章_日志文件包含_从一道 CTFshow 题目讲透「日志投毒型 LFI → RCE」:原理、时序陷阱与全变种攻防手册
android·网络安全·渗透测试·漏洞危害·漏洞描述·日志投毒·红队指南
AIsoft_868918 小时前
学术讲座录音如何整理?录音APP可行吗
android·iphone
Patrick在香港20 小时前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos