2011-05-05 71 views
0

Android通訊錄是推動我瘋了! 此代碼正在返回空遊標,但聯繫人已存在!任何人都可以看到我不能?Android通訊錄無法檢索數據

 ContentResolver cr = getContentResolver(); 
     String query = ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = " +pickedID; 
     Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,query , null, null); 
     pCur.moveToFirst(); 
      while (pCur.moveToNext()) { 
        contactPhone.setText(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA))); 
       } 
       pCur.close(); 

       query = ContactsContract.CommonDataKinds.Email.CONTACT_ID +" = " +pickedID; 
       pCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,query , null, null); 
       pCur.moveToFirst(); 
         while (pCur.moveToNext()) { 
          contactPhone.setText(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA))); 
         } 
         pCur.close(); 
+0

請看看谷歌接觸裝載機例子https://github.com/codepath/android-contacts-loader-demo – 2017-06-26 09:36:48

回答

0

我覺得你的問題的根源是你最初如何檢索聯繫人列表。

Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,query , null, null); 

應..

Cursor pCur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
+0

但我查詢基於從以前的查詢聯繫人ID的電話號碼。只是嘗試這樣做\t \t \t查詢字符串= ContactsContract.Contacts._ID + 「=」 + pickedID; \t \t \t光標pCur = cr.query(ContactsContract.Contacts.CONTENT_URI,空,查詢,NULL,NULL); \t \t \t pCur.moveToFirst(); \t \t而(pCur.moveToNext()){ \t \t \t \t contactPhone.setText(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA))); \t \t \t} \t \t \t pCur.close();但它仍然返回一個空的光標 – Atkobeau 2011-05-07 14:28:00

1

我不知道這是否是問題的全部原因,但你調用

pCur.moveToFirst(); 

光標移動到第一項。然後你立刻打電話

while (pCur.moveToNext()) 

光標移動到第二個條目。所以你跳過了第一個條目。

離開了pCur.moveToFirst();和剛剛離開while循環,看看有沒有什麼幫助。

2

我曾與空光標同樣的問題,我的問題是,我已經忘了添加 的代碼在Manifest.xml文件以下行:

uses-permission android:name="android.permission.READ_CONTACTS"