跳转到联系人

Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setData(ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent,CONTACT_ONRESULT);
/*startActivityForResult(new Intent(
	Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI), CONTACT_ONRESULT);*/


@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		// 判断是否请求成功
		boolean isResultOk = (Activity.RESULT_OK == resultCode);
		// 获取请求code
		switch(requestCode){
			case CONTACT_ONRESULT:
				if(isResultOk){
					ContentResolver reContentResolverol = getContentResolver();
					Uri contactData = data.getData();
					Cursor cursor = managedQuery(contactData, null, null, null, null);
					cursor.moveToFirst();
					String username = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
					String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
					Cursor phone = reContentResolverol.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
							null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId,null,null);
					while (phone.moveToNext()) {
						String usernumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
						LogTools.d(TAG,"联系人:" + username + ",联系人号码" + usernumber);
						//TODO
					}
				}
				break;
		}
	}


### Android Intent 跳转到系统联系人页面的功能实现 在 Android 应用开发中,可以通过 `Intent` 实现跳转到系统的联系人页面。以下是具体实现方式的详细说明: #### 1. 使用显式 Intent 跳转到系统联系人应用 通过设置 `Intent` 的动作(Action)为 `Intent.ACTION_VIEW` 并结合 `ContactsContract.Contacts.CONTENT_URI`,可以实现跳转到系统联系人页面的功能[^1]。 ```java Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(ContactsContract.Contacts.CONTENT_URI); startActivity(intent); ``` 上述代码中,`ContactsContract.Contacts.CONTENT_URI` 是 Android 系统提供的一个标准 URI,用于指向联系人数据表。`Intent.ACTION_VIEW` 表示查看指定的数据内容。 #### 2. 使用隐式 Intent 打开特定联系人详情 如果需要直接跳转到某个特定联系人的详情页面,则需要知道该联系人的 ID,并将 ID 嵌入到 URI 中[^3]。 ```java String contactId = "123"; // 示例:假设联系人 ID 为 123 Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, contactId); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); ``` #### 3. 检查设备上是否安装了联系人应用 为了避免因设备未安装联系人应用而导致崩溃,建议在启动 `Intent` 前检查是否有能够处理该 `Intent` 的应用[^2]。 ```java Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(ContactsContract.Contacts.CONTENT_URI); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } else { Toast.makeText(this, "无法找到联系人应用", Toast.LENGTH_SHORT).show(); } ``` #### 注意事项 - 在使用 `ContactsContract.Contacts.CONTENT_URI` 时,确保应用已声明相关权限,例如 `READ_CONTACTS` 权限。 - 如果目标设备运行的是 Android 6.0(API 级别 23)或更高版本,则需要动态请求权限。 ```xml <uses-permission android:name="android.permission.READ_CONTACTS" /> ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值