2013-03-04 132 views
0

我一直在关注来自this网站的教程,以获取Android中联系人的电话号码。无法获取最后联系人的电话号码

我面对的问题是,我似乎无法得到最后一个联系电话号码。 例如,如果我有3个联系人保存,它显示了前2个号码。

我张贴我的代码以及如果它可以帮助任何人。

if(cur.getCount()>0){ 
     while(cur.moveToNext()){ 
      String id=cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
      String name=cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      if(Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))>0){ 
       pCur=getContentResolver(). 
         query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
           ContactsContract.CommonDataKinds.Phone._ID+"=?", 
           new String[]{id}, null); 
       while(pCur.moveToNext()){ 
        number.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); 
       }     
      } 
      pCur.close(); 
     } 
    } 

任何帮助,将不胜感激。 谢谢!

============================

编辑:对于那些有兴趣以下是对工作的代码我:

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
    while (phones.moveToNext()) 
    { 
     String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
     String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     Log.i("Details", "Name: "+name+" Number: "+phoneNumber); 

    } 
    phones.close(); 

回答

0
String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone._ID, 
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
            ContactsContract.CommonDataKinds.Phone.NUMBER}; 
    String selection = ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER; 
         + 
    String[] selectionArgs = new String[] { "1" };        
    Cursor c = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
             projection, 
             selection, 
             selectionArgs, null} 
if (c.moveToFirst()) 
{ 
    do 
    { 
     Log.d("Test", "Contact: id = " + c.getLong(0) + " name = " + c.getString(1) + " phone = " + c.getString(2)); 
    } 
} 
+0

感谢您的建议。这似乎并没有为我工作。我试着用不同的do-while循环,但不幸的是我的app force关闭了。这也是同样的事情。 – Anirudh 2013-03-04 09:50:10

+0

你应该能够获得所有具有上述代码的手机的联系人。 – 2013-03-04 16:29:45

+0

当我使用此代码时,我的应用程序强制关闭。我从其他地方找到了合适的解决方案。无论如何,谢谢你的帮助。 – Anirudh 2013-03-05 05:40:27

0

喜试试下面的代码来获取所有联系人

 Cursor c=dbHelper.getAllContact(); 
     startManagingCursor(c); 
     ArrayList<String> columnArray1 = new ArrayList<String>(); 
     if (c.moveToFirst()) 
     { 
      do {   
       columnArray1.add(c.getString(0)); 
      } while (c.moveToNext()); 
     } 
相关问题