String [] projection= new String[]{
Phones._ID,
Phones.TYPE,
Phones.NUMBER,
"(SELECT NAME FROM PEOPLE AS people WHERE PEOPLE._id =PERSON) AS peopleName",
// new StringBuilder().append("(SELECT NAME FROM PEOPLE AS people WHERE PEOPLE._id =").append(Phones.PERSON_ID)
// .append(") AS peopleName").toString(),
"(SELECT DATA FROM PHOTOS AS PHOTOS WHERE PHOTOS.PERSON =PERSON) AS peopleLogo",
// new StringBuilder().append("(SELECT DATA FROM PHOTOS AS PHOTOS WHERE PHOTOS.PERSON =").append(Phones.PERSON_ID)
// .append(") AS peopleLogo").toString()
};
String selection = "0==0) GROUP BY (PERSON";
Cursor cursor = context.getContentResolver().query(Phones.CONTENT_URI, projection, selection, null, null);
while(cursor.moveToNext()){
System.out.println(cursor.getString(cursor.getColumnIndex(Phones.NUMBER)));
System.out.println(cursor.getString(cursor.getColumnIndex("peopleName")));
}
分享到:
相关推荐
在安卓开发中,ContentResolver是Android系统提供的一种接口,用于与内容提供者(Content Provider)进行交互,从而访问和管理...通过深入学习和实践,可以扩展到更复杂的场景,如搜索联系人、处理多个数据表的关联等。
在Android开发中,ContentResolver是用于访问Android内容提供者(Content Provider)的一种接口,它允许应用程序与其他应用程序的数据进行交互,包括系统内置的数据如联系人、日历等。本篇文章将详细解析如何使用...
使用ContentResolver的query()方法来查询CallLog表。例如: ```java ContentResolver contentResolver = getContentResolver(); Uri callLogUri = CallLog.Calls.CONTENT_URI; String[] projection = {CallLog....
通常,我们使用`ContactsContract.Data`表来表示单个联系人条目,并通过`ContactsContract.RawContacts`表关联到具体的联系人。 4. **插入数据**:使用`ContentResolver`的`insert()`方法向联系人数据库添加新数据...
开发者需要注册广播接收器监听电话状态变化(例如`PhoneStateListener`),当有来电时,获取来电号码,然后通过ContentResolver查询与之关联的联系人信息,将姓名展示在来电界面上。 4. **用户界面设计**:良好的...
联系人信息被存储在多个表中,如`RawContacts`、`Data`、`Contacts`等,每个表都有相应的SQLite操作方法。 三、联系人数据模型 1. RawContacts:代表单一的联系人源,如Google账户或SIM卡。 2. Data:存储具体的...
综上所述,"android通讯录分组管理"项目涵盖了Android开发中的多项核心技能,包括数据存储、用户界面设计、数据检索、权限管理、性能优化等多个方面,是学习和实践Android开发的优秀实例。通过这个项目,开发者可以...
在这个过程中,`ContactsContract.Contacts.CONTENT_URI`是联系人表的URI,`null`表示没有特定的查询条件,`cursor.getColumnIndex`用于获取指定列的索引,最后遍历Cursor对象获取每个联系人的信息。 此外,源码...
通常,我们使用`ContactsContract.Contacts`表来获取联系人基本信息,然后通过联系人的ID进一步查询其详细信息,如电话号码、电子邮件等。为了有索引,我们可以利用`ContactsContract.Contacts._ID`作为主键,通过`...
- **表结构**:Contacts Provider维护了多个表,如`Contacts`、`RawContacts`、`Data`等,它们之间通过唯一的ID关联,形成一个复杂的联系人数据模型。 - **数据存储**:联系人的姓名、电话号码、电子邮件地址等...
Android联系人数据模型包含多个表,如`RawContacts`、`Data`、`Groups`等。`RawContacts`表存储每个联系人的基本信息,`Data`表存储具体的数据项(如电话号码、电子邮件),`Groups`表则管理联系人分组。这些表之间...
联系人可以被组织进不同的分组,通过ContactsContract.Groups表和ContactsContract.ContactGroups表进行管理。分组的ID可以用来关联特定联系人。 7. **联系人照片**: 可以获取联系人的头像,ContactsContract....
3. **查询联系人**:使用ContentResolver的query()方法可以查询联系人信息。例如,我们可以查询所有联系人,或者根据特定条件(如名字、电话号码等)筛选联系人。查询结果会返回一个Cursor对象,我们可以遍历Cursor...
- Android使用SQLite数据库存储通讯录数据,每个联系人可能包含多个条目,如姓名、电话号码、电子邮件地址、生日等。 - 数据表主要分为两个:`Contacts` 和 `RawContacts`。`Contacts` 表用于存储联系人的元数据,...
Contacts应用中的每个联系人可能关联多个条目,如电话号码、电子邮件地址等,这些都需要在数据库中合理组织。 5. **ContentObserver**:为了实现实时数据更新,应用可能会使用ContentObserver监听Contacts Provider...
- `ContactsContract.RawContacts`:这个表包含每个联系人与群组的关联信息。每个联系人可能属于多个群组。 - `ContactsContract.Data`:此表用于存储联系人的具体数据,如姓名、电话号码等,同时也记录了联系人...
要获取联系人生日信息,我们需要构建一个查询,指定要查询的表和列。`ContactsContract.CommonDataKinds.Event`类提供了与事件(如生日)相关的常量。`ContactsContract.Data.CONTACT_ID`用于关联联系人ID,`...
《Android SDK 1.6与Eclipse环境下的Notepad记事本源码解析》 在Android应用开发领域,Notepad项目是初学者入门的经典案例,它是一个简单的记事本应用程序,帮助开发者理解基本的Android UI设计、数据存储以及事件...
开发者需要实现ContentProvider类,并提供URI来标识数据,以便其他应用通过ContentResolver进行查询、插入、更新和删除操作。 在Android开发过程中,四大组件通常会协同工作。例如,一个Activity可能启动Service来...
2. 使用MediaStore类:Android提供了MediaStore.Images.Media类来访问设备上的图片,可以通过ContentResolver查询所有图片的Uri。 3. 使用CursorLoader:对于大量数据,推荐使用CursorLoader,它能在后台线程中加载...