`

调用android自带的联系人

阅读更多

android程序的开发中,经常要实现的一个功能是调用系统自带的联系人界面,做到选择人之后,取得相应的名称和号码。而android2.0前后实现方式上也有一些差别,主要是2.0版本后联系人API发生了变化,由原来的Contacts变成了ContactsContract。

一 2.0之前取联系人列表的方式
声明意图方式一
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自带联系人应用

    在Eclipse中编译Android自带的联系人应用涉及多个步骤,包括获取源码、配置环境、导入项目、编译和解决依赖。通过这个过程,开发者可以深入学习Android系统的内部工作原理,并对联系人应用的源码进行定制和改进。...

    android自带应用程序源代码

    学习Android自带应用程序源代码的过程通常涉及阅读代码、追踪函数调用、理解类结构和数据模型。开发者可以使用IDE(如Android Studio)来导入源代码项目,进行调试和实验,以加深理解。 总的来说,"android自带应用...

    安卓android系统自带程序卸载、删除方法宣贯.pdf

    例如,删除“ContactsProvider.apk”将影响联系人数据存储,删除“GoogleServicesFramework.apk”则无法同步联系人或登录Google账户。此外,还有一些应用虽然不是绝对必要,但删除可能影响特定功能,如“Gmail.apk”...

    android系统自带短信程序源码部分分析.docx

    - `ContactList` 是联系人列表的管理类,用于存储和检索联系人信息。 - `RecipientIdCache` 类用于异步加载特殊表,将会话数据映射到联系人信息,以便快速查找。 3. **UI结构与交互**: - UI的交互主要在`...

    操作系统自带功能(拨打电话,发送信息,发送邮件,下载,调用通讯录)

    - `ContactsContract`类提供了对通讯录的访问接口,包括读取联系人、添加联系人、更新联系人和删除联系人等。 - 获取联系人列表通常需要`READ_CONTACTS`权限,写入联系人需要`WRITE_CONTACTS`权限。 - 示例:`...

    Android课程设计--便捷通讯录

    这使得系统中的其他应用(如系统自带的联系人应用)能够读取或更新应用内的通讯录数据。 4. **Intent和意图过滤器**:在Android中,Intent用于启动新的Activity或Service。在这个通讯录应用中,可能会有Intent用于...

    Android通讯录

    1. `ContactsApp`:Android系统自带的联系人应用,展示了如何使用Content Provider来显示和编辑联系人。 2. 自定义联系人UI:开发者可以通过`CursorAdapter`和`LoaderManager`创建自定义的联系人列表视图,展示联系...

    android通讯录

    8. **联系人选择器**:Android提供了Intent机制,允许你启动系统自带的联系人选择器,让用户挑选一个或多个联系人。完成后,系统会通过Intent的Extra数据返回所选联系人的ID或其他信息。 9. **同步适配器**:对于...

    android应用java源码

    Android系统自带的应用程序,如电话、联系人、设置等,都是用Java语言编写的,并遵循特定的架构和设计模式。本资料包"android应用java源码"提供了对这些核心系统应用的源代码访问,这对于开发者深入理解Android系统...

    android自定义的手机通讯录

    2. ContentProvider:它是Android系统中用于数据共享的关键组件,可以使其他应用程序(如系统自带的联系人应用)访问你的数据。你需要创建一个自定义的ContentProvider,实现增删查改操作,并注册到AndroidManifest....

    android_通讯录源码

    通过设置特定的Action和Data,可以调用系统自带的联系人编辑界面,或者自定义一个编辑界面。同时,要确保处理返回的数据,以更新已修改的联系人信息。 最后,考虑到隐私和权限问题,访问通讯录数据需要在...

    地址查询(android)

    通过调用Android系统的Intent机制,创建发送短信的意图,允许用户选择联系人并附带地址信息,一键发送。在处理短信发送时,需要注意权限管理,确保应用在请求发送短信权限时,提供充分的理由和明确的提示。 五、...

    Android源码资源包

    8. **Apps(预装应用)**:出厂时系统自带的应用程序,如联系人、日历、设置等,都是由源码编译生成的APK文件。 在实际开发中,通过查看源码,你可以: - **理解API工作原理**:当遇到API的使用问题或想要扩展其...

    Android二维码扫描+闪光

    首先,二维码扫描是移动应用中常见的一种功能,允许用户通过手机摄像头读取二维码中的信息,如网址、文本、联系人信息等。Android SDK虽然没有直接提供完整的二维码扫描API,但Google提供了名为ZXing(Zebra ...

    Buddy:适用于 Android 的简单联系人管理应用程序

    此外,考虑到数据同步,"Buddy"可能支持导入导出联系人功能,这通常是通过Intent机制调用系统自带的导出/导入服务来实现。用户可以选择将联系人备份到存储卡,或者从备份文件中恢复。 总的来说,"Buddy"这款应用...

    安卓Android,eclipse通讯录简易版带服务端

    4. **通讯录应用**:在Android平台上,通讯录应用是系统自带的核心组件之一,允许用户管理联系人信息。本项目是一个简化版的通讯录应用,包含基本的增删改查操作,并且具备较为完善的查询功能,模拟了现代手机的查询...

    android 源码

    最后,"通讯录&联系人&打电话&发短信.zip"这部分源码将揭示Android中与联系人管理、拨打电话和发送短信相关的功能。开发者可能会用到`ContentResolver`来查询和操作联系人数据,使用`Intent`启动系统拨号和短信发送...

Global site tag (gtag.js) - Google Analytics