_未使用查询访问的id和号码:Android
我的代码如下_未使用查询访问的id和号码:Android,android,Android,我的代码如下 String projection[] = new String[]{ ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME }; Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
String projection[] = new String[]{ ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME };
Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, //The URI, using the content:// scheme, for the content to retrieve.
projection, // projection
null, // selection
null, // selectionArgs
ContactsContract.Data.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
我想将联系人id、姓名和号码(MAIN或任何一种类型)添加到intent中,但问题是我无法访问name。另一个问题是,每个联系人id返回“-1”。为什么?
有什么解决办法吗 在
query
方法中,将projection
变量的值设置为null
而不是关闭,您应该这样尝试:
String[] projection = new String[] {ContactsContract.Data._ID,
ContactsContract.Data.CONTACT_ID,
ContactsContract.Data.DISPLAY_NAME};
Android开发人员文档中明确指出:
将数据从游标公开到列表视图小部件的适配器。光标必须包含名为“\u id”的列,否则此类将不起作用
请参见文档中的此处:
我添加了投影,但您确定号码,因为直到我无法访问号码(联系号码)。有些文章说这个数字存储在他们自己的表中,所以我们必须使用_ID进行查询。我的意思是我必须写入查询方法。我这样做,我得到了号码,但是有没有其他方法可以通过一个查询(如您所给出的)来获得联系人号码。@Pankaj:是的,您可以通过编写一个查询来实现。使用此投影值
String[]projection=new String[]{Phone.\u ID,Phone.DISPLAY\u NAME,Phone.NUMBER}代码>也不要忘记导入android.provider.ContactsContract.CommonDataTypes.Phone
classok,这是投影。但是如何访问这些号码(比如contactName=c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)))来访问姓名。@Pankj:比如:String phoneNumber=this.c.getString(this.c.getColumnIndex(Phone.NUMBER))代码>