2012-03-10 110 views
1

我的應用程序需要從聯繫人列表中選擇一個聯繫人,然後從所選聯繫人中獲取姓名和手機號碼以將其存儲在應用程序中,我成功獲取姓名,但我怎麼能驗證聯繫人是否有手機號碼(不是家庭),然後獲取號碼?如何從聯繫人中獲取手機號碼

我該如何檢查聯繫人是否有一個或多個手機號碼?

+0

當你來自聯繫人的電話號碼,您可以查看其類型。看看Phone.TYPE_xxx常量。同時,請記住,電話號碼的類型由設備的所有者設置,並且在很多情況下這些類型不正確。例如,在我的手機上,大多數聯繫人電話號碼都是手機號碼,但它們是用「TYPE_CUSTOM」類型保存的,並在聯繫人詳細信息中顯示爲「DEFAULT」。哦,看看這個號碼也不會給你答案。你最好的選擇是依靠電話號碼的TYPE_xxx,儘管它不可​​靠。 – 2012-03-10 22:40:41

+0

非常感謝.. – user1256894 2012-03-11 12:11:43

回答

0

在Android的聯繫人姓名和電話號碼在不同的ContentProvider保存所以取CONTACT_ID從下面的代碼

cur=cr.query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER +" > 0", null, null); 
     cur.moveToFirst(); 
     while(cur.isAfterLast()==false){ 
     // Log.e("Name is:",cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME))); 
       Fid=Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID))); 

       int id=Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID))); 
       Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null, null, null); 

       pCur.moveToFirst(); 
       while (pCur.isAfterLast()==false) { 
        int idinner=Integer.parseInt(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID))); 
        if(idinner==id){ 

//Add id to Array 

       } 
       pCur.moveToNext(); 
      } 
      cur.moveToNext(); 
     } 

,比這個ID,你可以得到的手機號碼和其他細節

public String getNo(String[] no){ 

    String seleContact=""; 
// String[] contactNos=new String[no.length]; 
    for(int i=0;i<no.length;i++){ 
     if(no[i].trim().toString().equalsIgnoreCase("")){ 
      break; 
     } 
     int id=Integer.parseInt(no[i]); 
     //Cursor cur=cr.query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.Contacts._ID +" = "+id, null, null); 
     //cur.moveToFirst(); 

     Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"="+id, null, null); 
     pCur.moveToFirst(); 

     while(pCur.isAfterLast()==false){ 
       if(Integer.parseInt(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)))==(ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)){ 
    //    String uname=cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)).toString(); 
        String tempMoNo=pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
        Log.e("Activity result selelength is",String.valueOf(seleContact.length())); 
        String[] temp=tempMoNo.split("-"); 
        String MoNo=""; 
        int le=temp.length; 
        for(int j=0;j<le;j++){ 
         MoNo +=temp[j]; 
        } 

        if (seleContact.length() > 0) { 
          seleContact += "," + (MoNo); 
         } else { 
          seleContact += (MoNo); 
          }    
       } 
      pCur.moveToNext(); 
      } 
     pCur.close(); 
    } 

    return seleContact; 
} 
+0

它其實很有幫助,thaaankü:) – user1256894 2012-03-11 13:02:43

相關問題