UniAppx 跳转Android 系统通讯录
工作中遇到的问题浅浅记录一下
跳转方法
//跳转系统 通讯录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());}
回调监听
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;}})});