2014-10-28 27 views
0

我需要编写一个sqlite语句来检索所有HAS_PHONE_NUMBER列和从Contacts表(其中所有电话联系人驻留)。编写SQLite语句检索所有联系人信息

我希望它会看起来像下面这样:

它像Select HAS_PHONE_NUMBER, _ID from Contacts

其实我需要的Java代码,我可以(通过上面的SQLite的语句)抓住从Android的电话簿记录并保存在一个数组或列表的结果

+0

抱歉,但是,有什么问题吗?我认为你已经自己回答 – Leo 2014-10-28 05:49:34

+0

可以详细说明.... – 2014-10-28 05:52:39

+0

我需要java代码,我可以抓住记录并将其保存在一个数组中。我已更新我的问题 – Illep 2014-10-28 05:58:15

回答

0

这样:

if (Integer.parseInt(cur.getString(
      cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
     Cursor pCur = cr.query(
     ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
     null, 
     ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
     new String[]{id}, null); 
     while (pCur.moveToNext()) { 
     // Do something with phones 
     } 
     pCur.close(); 
    } 
+0

谢谢,但我想在代码中有SQL查询。查询是'Select * from Contacts' – Illep 2014-10-28 06:17:41

0

您可以通过下面的方法做到这一点: -

ArrayList<String> id=new ArrayList<String>(); 
    Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null,null, null, null); 

    if (cursor.getCount() > 0) { 

     while (cursor.moveToNext()) { 


      int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))); 

      if (hasPhoneNumber > 0) { 

      String contact_id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
      id.add(contact_id); 


      } 
     } 
    } 
       cursor.close(); 

不要忘了提读取联系人权限在menifest

+0

谢谢,但是'Select'语句在哪里。我也想写Select语句。像'select * from Contacts' – Illep 2014-10-28 06:12:28

+0

是你熟悉的android,为了编写上面类型的查询,你需要数据库实例,这里我们有内容解析器,我不认为我们可以在内容解析器上运行一个rawquery。以上是一个方法我们执行并从中查询数据android – 2014-10-28 06:19:02

+0

我可以在系统表上使用rawqueries,例如'Contacts'表? – Illep 2014-10-28 06:27:13