在android程序的开发中,经常要实现的一个功能是调用系统自带的联系人界面,做到选择人之后,取得相应的名称和号码。而android2.0前后实现方式上也有一些差别,主要是2.0版本后联系人API发生了变化,由原来的Contacts变成了ContactsContract。
声明意图方式一
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setData(Contacts.People.CONTENT_URI);
startActivityForResult(intent,
);
PICK_CONTACT
声明意图方式二
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("Contacts.People.CONTENT_TYPE");//vnd.android.cursor.dir/person
startActivityForResult(intent,
);
PICK_CONTACT
实现onActivityResult
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case
:
PICK_CONTACT
if (data == null) {
return;
}
Uri uri = data.getData();
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
String number = cursor.getString(cursor.getColumnIndexOrThrow(Phones.NUMBER));
Log.d(TAG, "number" + number);
mContactText.setText(number);
mContactText.setSelection(number.length());
break;
default:
break;
}
}
二 2.0之后取联系人列表的方式:
声明意图方式一
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
声明意图方式二
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);//vnd.android.cursor.dir/contact
startActivityForResult(intent, PICK_CONTACT);
实现onActivityResult
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
case (PICK_CONTACT) :
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
if (c.moveToFirst()) {
String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
String phoneNumber = null;
if ( hasPhone.equalsIgnoreCase("1"))
hasPhone = "true";
else
hasPhone = "false" ;
if (Boolean.parseBoolean(hasPhone))
{
Cursor phones=
getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
while (phones.moveToNext())
{
phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phones.close();
}
}
}
break;
}
}
相关推荐
在Eclipse中编译Android自带的联系人应用涉及多个步骤,包括获取源码、配置环境、导入项目、编译和解决依赖。通过这个过程,开发者可以深入学习Android系统的内部工作原理,并对联系人应用的源码进行定制和改进。...
学习Android自带应用程序源代码的过程通常涉及阅读代码、追踪函数调用、理解类结构和数据模型。开发者可以使用IDE(如Android Studio)来导入源代码项目,进行调试和实验,以加深理解。 总的来说,"android自带应用...
例如,删除“ContactsProvider.apk”将影响联系人数据存储,删除“GoogleServicesFramework.apk”则无法同步联系人或登录Google账户。此外,还有一些应用虽然不是绝对必要,但删除可能影响特定功能,如“Gmail.apk”...
- `ContactList` 是联系人列表的管理类,用于存储和检索联系人信息。 - `RecipientIdCache` 类用于异步加载特殊表,将会话数据映射到联系人信息,以便快速查找。 3. **UI结构与交互**: - UI的交互主要在`...
- `ContactsContract`类提供了对通讯录的访问接口,包括读取联系人、添加联系人、更新联系人和删除联系人等。 - 获取联系人列表通常需要`READ_CONTACTS`权限,写入联系人需要`WRITE_CONTACTS`权限。 - 示例:`...
这使得系统中的其他应用(如系统自带的联系人应用)能够读取或更新应用内的通讯录数据。 4. **Intent和意图过滤器**:在Android中,Intent用于启动新的Activity或Service。在这个通讯录应用中,可能会有Intent用于...
1. `ContactsApp`:Android系统自带的联系人应用,展示了如何使用Content Provider来显示和编辑联系人。 2. 自定义联系人UI:开发者可以通过`CursorAdapter`和`LoaderManager`创建自定义的联系人列表视图,展示联系...
8. **联系人选择器**:Android提供了Intent机制,允许你启动系统自带的联系人选择器,让用户挑选一个或多个联系人。完成后,系统会通过Intent的Extra数据返回所选联系人的ID或其他信息。 9. **同步适配器**:对于...
Android系统自带的应用程序,如电话、联系人、设置等,都是用Java语言编写的,并遵循特定的架构和设计模式。本资料包"android应用java源码"提供了对这些核心系统应用的源代码访问,这对于开发者深入理解Android系统...
2. ContentProvider:它是Android系统中用于数据共享的关键组件,可以使其他应用程序(如系统自带的联系人应用)访问你的数据。你需要创建一个自定义的ContentProvider,实现增删查改操作,并注册到AndroidManifest....
通过设置特定的Action和Data,可以调用系统自带的联系人编辑界面,或者自定义一个编辑界面。同时,要确保处理返回的数据,以更新已修改的联系人信息。 最后,考虑到隐私和权限问题,访问通讯录数据需要在...
通过调用Android系统的Intent机制,创建发送短信的意图,允许用户选择联系人并附带地址信息,一键发送。在处理短信发送时,需要注意权限管理,确保应用在请求发送短信权限时,提供充分的理由和明确的提示。 五、...
8. **Apps(预装应用)**:出厂时系统自带的应用程序,如联系人、日历、设置等,都是由源码编译生成的APK文件。 在实际开发中,通过查看源码,你可以: - **理解API工作原理**:当遇到API的使用问题或想要扩展其...
首先,二维码扫描是移动应用中常见的一种功能,允许用户通过手机摄像头读取二维码中的信息,如网址、文本、联系人信息等。Android SDK虽然没有直接提供完整的二维码扫描API,但Google提供了名为ZXing(Zebra ...
此外,考虑到数据同步,"Buddy"可能支持导入导出联系人功能,这通常是通过Intent机制调用系统自带的导出/导入服务来实现。用户可以选择将联系人备份到存储卡,或者从备份文件中恢复。 总的来说,"Buddy"这款应用...
4. **通讯录应用**:在Android平台上,通讯录应用是系统自带的核心组件之一,允许用户管理联系人信息。本项目是一个简化版的通讯录应用,包含基本的增删改查操作,并且具备较为完善的查询功能,模拟了现代手机的查询...
最后,"通讯录&联系人&打电话&发短信.zip"这部分源码将揭示Android中与联系人管理、拨打电话和发送短信相关的功能。开发者可能会用到`ContentResolver`来查询和操作联系人数据,使用`Intent`启动系统拨号和短信发送...