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;
			}


		})
	});
相关推荐
橙子199110161 小时前
Kotlin 中的数据类型有隐式转换吗?为什么?
android·开发语言·kotlin
一起搞IT吧8 小时前
Camera相机人脸识别系列专题分析之一:人脸识别系列专题SOP及理论知识介绍
android·图像处理·人工智能·数码相机
feifeigo12310 小时前
Docker-compose 编排lnmp(dockerfile) 完成Wordpress
android·docker·容器
鸿蒙布道师10 小时前
HarmonyOS 5 应用开发导读:从入门到实践
android·ios·华为·harmonyos·鸿蒙系统·huawei
JK0x0715 小时前
代码随想录算法训练营 Day58 图论Ⅷ 拓扑排序 Dijkstra
android·算法·图论
非凡ghost15 小时前
摄像头探测器APP:守护隐私的防偷拍利器
android·智能手机·生活·软件需求
Lotay_天天20 小时前
Android 缓存应用冻结器(Cached Apps Freezer)
android·缓存
wzj_what_why_how21 小时前
从解决一个分享图片生成的历史bug出发,详解LayoutInflater和View.post的工作原理
android
雪饼android之路21 小时前
Building Android Kernels with Bazel
android
笔沫拾光21 小时前
Flutter 与 Android 原生布局组件对照表(完整版)
android·flutter·widget·android布局