获取android手机了通讯录和sim卡联系人

原创 2012年03月30日 12:13:23
private ArrayList<SamContact> getAllContacts()
{
ArrayList<SamContact> arrayList = new ArrayList<SamContact>();
//获取本机联系人
Cursor cur = getContentResolver().query(  
                ContactsContract.Contacts.CONTENT_URI,  
                null ,  
                null ,  
                null ,  
                ContactsContract.Contacts.DISPLAY_NAME  
                        + " COLLATE LOCALIZED ASC" );
if(cur.moveToFirst())
{
do{
SamContact samContact = new SamContact();
samContact.isChoosed = false;
int  idColumn = cur.getColumnIndex(ContactsContract.Contacts._ID);  
           int  displayNameColumn = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
           // 获得联系人的ID号   
           String contactId = cur.getString(idColumn);  
           // 获得联系人姓名   
           String disPlayName = cur.getString(displayNameColumn);
           System.out.println(disPlayName);
           samContact.name = disPlayName;
           // 查看该联系人有多少个电话号码。如果没有这返回值为0   
           int  phoneCount = cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
           if(phoneCount <1)
           {
            continue;
           }
           Cursor phones = getContentResolver().query(  
                   ContactsContract.CommonDataKinds.Phone.CONTENT_URI,  
                   null ,  
                   ContactsContract.CommonDataKinds.Phone.CONTACT_ID  
                           + " = "  + contactId,  null ,  null );
           if  (phones.moveToFirst()) 
           {  
               do  {  
                   // 遍历所有的电话号码   
                   String phoneNumber = phones  
                           .getString(phones  
                                   .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));  
                   int phoneType = phones  
                           .getInt(phones  
                                   .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
                   if(phoneType == ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
                   {
                    samContact.phone = phoneNumber;
                    arrayList.add(samContact);
                    break;
                   }
               } while  (phones.moveToNext()); 
               
           }
           
           
           
}while(cur.moveToNext());
}
//获取sim卡联系人
Uri uri = Uri.parse("content://icc/adn");
Cursor cur2 = getContentResolver().query(  
uri,  
                null ,  
                null ,  
                null ,  
                ContactsContract.Contacts.DISPLAY_NAME  
                        + " COLLATE LOCALIZED ASC" );
System.out.println("contact num from sim card = "+cur2.getCount());
System.out.println("---------------");
if(cur2.moveToFirst())
{
do{
try 
{
SamContact samContact = new SamContact();
samContact.isChoosed = false;
           int  displayNameColumn = cur2.getColumnIndex(People.NAME);
           int  phoneColumn = cur2.getColumnIndex(People.NUMBER);
           samContact.name  = cur2.getString(displayNameColumn);
           if(samContact.name == null)
           {
            continue;
           }
           samContact.phone = cur2.getString(phoneColumn); 
           if(samContact.phone == null)
           {
            continue;
           }
           arrayList.add(samContact);

catch (Exception e) 
{
e.printStackTrace();

}while(cur2.moveToNext());
}


return arrayList;
}


public static class SamContact 
{
public String name = "";
public String phone = "";
public boolean isChoosed = false;

}

相关文章推荐

将SIM卡上的联系人导入Android手机中

原文地址::http://www.ataaw.com/skill/541.html 新购买Android手机的朋友第一件事情可能就是需要将SIM卡上的联系人导入到手机中,但是许多朋友...

获取手机通讯录的实战应用(含SIM卡中的联系人)

效果图:   正题: 本实例包含几下实际应用: 1. 获取手机通讯录(包括SIM卡中的联系人) 2. 几种Intent的传值应用 3. Adapter的自定义使用 4. AutoCo...

TelephonyManager类:Android手机及Sim卡状态的获取

Android本机号码及Sim卡状态的获取 TelephonyManager这个类很有用,可以得到很多关于手机和Sim卡的信息。 直接上注释后的代码,...

Android手机与SIM卡通信的途经的研究报告

Sim Stk 工作原理:http://www.bladox.cz/devel-docs/gen_stk.html Ril 和 Tele 模块在stk中的工作逻辑:http://blog.sina....

使用系统内置的ContentProvider获取非SIM卡的手机联系人

要使用系统的内置ContentProvider,首先得获取注册权限。           android:name="android.permission.READ_CONTACTS">    ...

Android手机获取通讯录联系人信息及短信广播实现

现在越来越多的android应用在注册时都要用到手机号码,通过获取手机验证码来完成注册。也有不少应用提供了手机通讯录备份功能,获得你的允许后把你的通讯录中的手机号码保存到服务器中,你要的时候又可以do...
  • true100
  • true100
  • 2015年04月03日 09:30
  • 1418

手机联系人姓名或号码过长无法导入到SIM卡

手机联系人姓名或号码过长无法导入到SIM卡 [DESCRIPTION] 1. 手机联系人姓名较长;  2. 将此联系人复制到sim卡;  [结果] 提示导入失败  [期望] 导入成功,自动剪切联系...

Android开发之获取手机SIM卡信息

所有分类  >  开发语言与工具  >  移动开发  >  Android开发 Android开发之获取手机SIM卡信息 Android   2014-07-22 17:31:46 发布 您的评...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:获取android手机了通讯录和sim卡联系人
举报原因:
原因补充:

(最多只允许输入30个字)