zxd_72 2012-12-29 09:24 采纳率: 0%
浏览 4225
已采纳

Android:使用ContentResolver,CONTACT_ID 是列还是行?

我用以下代码实现在屏幕上打印contactIdtelephone number
我在网上找了这段代码,有些语句还是不明白:

ContentResolver solver = getContentResolver();
            String mess="";

            Cursor cursor = solver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
            while (cursor.moveToNext()){
                String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
                mess = mess + "ID: "+contactId+"\n";

                Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null);
                while (phones.moveToNext()) { 
                     String phoneNumber = phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER));    
                     mess = mess + phoneNumber + "\n";
                  } 
            }

这个语句我不知道什么意思:

Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null);

就像Android 开发中第三个参数:

selection : A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will return all rows for the given URI.

所以,按照上面的定义,CONTACT_ID意思是一个行。因为filter which row to return
下面这一行:

String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

CONTACT_ID看上去意思是一个列。
对这个问题我很疑惑,谁可以帮我指点一二呢?谢谢!

  • 写回答

2条回答

  • usniyo 2013-01-02 05:18
    关注

    CONTACT_ID是列而不是行,它是表中的一个字段,是一个属性,它当然是列。你看它是不是指向的是"contact_id"这字符串?这个字符串就是表中的字段名。“filter which row to return”虽然我不懂这鸟语,但我想意思应该和“满足条件的行将被返回”差不多,所以它并不表示行。第三个参数是SQL中“where”部分的字符串。也就是说

    Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null)
    

    的意思是表中满足CONTACT_ID列中值等于contactId的行都被返回。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler