推荐安卓开发神器(里面有各种UI特效和android代码库实例)
一下文章引自网络快照
http://203.208.37.132/search?q=cache:65WdqffxH-UJ:konshi.blogspot.com/2009/12/android-20.html+ContactsContract&cd=16&hl=zh-CN&ct=clnk&gl=cn&inlang=zh-CN&client=aff-avalanche&st_usg=ALhdy2-Kg5_1uawrMLIyiSfUHm1PLeA1GQ
如果使用了
import android.provider.Contacts; import android.provider.Contacts.People;
就要特別注意一下,
因為在android 2.0 SDK當中不建議使用,
請改用
import android.provider.ContactsContract; import android.provider.ContactsContract.PhoneLookup;
要取得聯絡人的姓名sample code如下:
final Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); while(people.moveToNext()) { int nameFieldColumnIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME); String contact = people.getString(nameFieldColumnIndex); } people.close();
奇怪的事,如果要取得聯絡人的電話
如果用
int nameFieldColumnIndex = people.getColumnIndex(PhoneLookup.NUMBER); String phone = people.getString(nameFieldColumnIndex); //nameFieldColumnIndex return回來的值總是 ─1,
上網google了一下,找到瞭解法,
1. 首先找到目標聯絡人的 _ID,例如要找第一個聯絡人的_ID
Cursor target = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); target.moveToFirst(); String contactId = cursor.getString(target.getColumnIndex(ContactsContract.Contacts._ID));
2. 接著透過_ID,來找電話號碼,電話號碼可能不只有一個,所以先判斷有無電話號碼
String IsPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
3. 如果有電話,接著再去query電話號碼
if( (Integer.parseInt(IsPhone) > 0) ) { Cursor phoneNumber = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null); while (phones.moveToNext()) { String strPhoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } }
** 如果要查詢e-mail,程式如下
Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,null, null); while (emails.moveToNext()) { String emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); }
另外
Java代码
Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); while (cursor.moveToNext()) { String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); if (Boolean.parseBoolean(hasPhone)) { 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)); } phones.close(); } Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,null, null); while (emails.moveToNext()) { String emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.CommonDataColumns.DATA)); } emails.close(); } cursor.close();
1.5
package com.activity; import android.app.Activity; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.Contacts; import android.provider.Contacts.People; import android.widget.TextView; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = (TextView) findViewById(R.id.TextView01); String columns[] = new String[] { People._ID, People.NAME, People.NUMBER, People.PRIMARY_EMAIL_ID, People.PRIMARY_ORGANIZATION_ID, People.PRIMARY_PHONE_ID, People.DISPLAY_NAME, People.IM_ACCOUNT, People.IM_HANDLE, People.PHONETIC_NAME, People.TYPE }; Uri mContacts = People.CONTENT_URI; Cursor cur = managedQuery(mContacts, columns, // 要返回的数据字段 null, // WHERE子句 null, // WHERE 子句的参数 People.NAME // Order-by子句 ); if (cur.moveToFirst()) { Cursor newcur = null; do { // 获取字段的值 String name = cur.getString(cur.getColumnIndex(People.NAME)); String phoneNo = cur.getString(cur .getColumnIndex(People.NUMBER)); String peopleId = cur.getString(cur.getColumnIndex(People._ID)); String[] PROJECTION = new String[] { Contacts.ContactMethods._ID, Contacts.ContactMethods.KIND, Contacts.ContactMethods.DATA }; newcur = managedQuery(Contacts.ContactMethods.CONTENT_URI, PROJECTION, Contacts.ContactMethods.PERSON_ID + "=\'" + cur.getLong(cur.getColumnIndex(People._ID)) + "\'", null, null); startManagingCursor(newcur); String email = ""; if (newcur.moveToFirst()) { while (newcur.moveToNext()) { email = email+ newcur.getString(newcur.getColumnIndex(Contacts.ContactMethods.DATA)); } } tv.setText("name = " + name + " phoneNo = " + phoneNo + "email = " + email); if (email != null && !"".equals(email) && email.trim().length() != 0) { // 此处可以取到联系人邮件 } } while (cur.moveToNext()); if (newcur != null) { newcur.close();// 用完得关闭吧 } } if (cur != null) cur.close(); // 用完得关闭吧 } }
相关推荐
在Android 2.0及更高版本中,由于SDK对联系人数据的访问方式进行了更新,开发者需要使用新的API来读取和操作联系人信息。本文将详细介绍如何使用`ContactsContract`类来实现这一功能。 在Android 2.0之前,开发人员...
5. 通讯录集成:与操作系统通讯录服务交互,读取或添加联系人信息。 在开发过程中,需要注意安全性和权限问题。由于NativeProcess API涉及到与本地系统的直接交互,因此可能会引发安全风险。开发者需要确保只调用受...
// 收货人 @ExcelProperty(index = 1) private String address; // 地址 @ExcelProperty(index = 2) private String phoneNumber; // 联系电话 // 其他字段... } ``` 现在,我们可以编写导入和导出的方法。...
这是酷派tbl短信读取器的姊妹版。 酷派tbl联系人读取器,导出联系人为文本格式,可被...仅读取联系人姓名和联系号码,忽略分组,无法重新导入手机! 在Windows 7 x64下测试通过。需要.net framework 2.0或以上支持。
图1显示了Web 2.0客户机的初始界面,而图2展示了“读取文档”视图,其中列出了Contacts数据库的联系人。这种Web 2.0客户端不仅提供了直观的用户界面,还实现了与Lotus Domino服务器的高效通信,使得数据的获取和编辑...
NPOI组件是.NET平台上一个强大的工具,专门...而利用Gmail API,你可以构建自动化工具,如同步联系人信息到数据库或其他系统。这个项目是一个很好的起点,对于学习如何在.NET环境中集成和使用这两个工具非常有价值。
Web 2.0的核心之一是社交网络,如Facebook、LinkedIn、Instagram和Twitter等,它们构建了一个庞大的用户社区,让人们可以建立联系、分享信息、协同工作。这些平台促进了人与人之间的连接,推动了信息传播的效率。 *...
bada2.0提供了丰富的API,使开发者可以创建应用来控制电话功能,如拨打电话、接听电话、管理联系人等。 #### Messaging(消息服务) 消息服务覆盖了短信(SMS)、彩信(MMS)、推送消息和电子邮件等多种形式的信息...
1. **联系人增添功能**:在通讯录中,用户能够自由添加新的联系人信息,包括姓名、电话号码、电子邮件地址、地址等关键字段。这需要设计一个友好的用户界面,让用户可以方便地输入信息,并将这些数据存储在后台...
2.0新增了子目录文件批量读取,批量模板比对功能.实现大批量照片入库比对一键完成.大大方便了使用.本版本为快捷特制版,主要针对有大量图片需要批处理的需求。 本工作室致力于人工智成算法的产品化工作(有意向投资者...
它提供了对OICQ号码进行删除、添加、修改等操作的功能,适用于用户整理自己的QQ联系人列表或者对账号进行管理。这款软件在早期网络通讯时代具有一定的实用性,帮助用户方便快捷地维护其OICQ账号数据库。 首先,让...
6. **JSR-75:PIM API**:提供了一个标准接口,用于访问个人信息管理(PIM)数据,如日历、联系人和任务,使得应用程序可以更好地与用户的个人信息同步。 7. **JSR-120:WMA API**:无线消息应用编程接口,使应用...
1、读取nbu文件中的所有联系人信息。 2、中英文名字,均可正常显示。 3、每个联系人支持最多四个联系方式:手机、电话号码、电话号码(家庭)、电话号码(办公)。 点击联系方式左边的按钮,可将内容拷贝到剪切...
5. **文件操作**:游戏中的图片资源需要读取和显示,这就涉及到了Java的文件I/O操作,如使用FileInputStream和BufferedImage加载和处理图像。 6. **游戏逻辑**:坦克的移动、碰撞检测、得分计算等游戏规则的实现,...
在现代移动应用中,获取和管理用户权限至关重要,例如访问联系人、位置信息、相机、存储等。这些权限的获取不仅需要遵循各个操作系统的规定,还需要以用户友好的方式呈现。HTML5提供了部分原生接口来处理这些权限...
2. **技术支持**:遇到问题或发现错误时,可以联系 truetime@control.lth.se 获取支持。 综上所述,TRUETIME 2.0 不仅是一款功能强大的控制器仿真软件,而且通过其丰富的文档和示例资源,使得初学者也能轻松掌握其...
3. **Yahoo联系人**:Yahoo Contacts API允许开发者读取、创建、更新和删除用户的联系人。使用这个API需要注册应用并获取API密钥,然后进行授权流程以获取访问令牌。 4. **Live/Live Mail联系人**:如同MSN,Live...
在这款程序中,"A.DAT"可能是一个数据文件,存储了用户的所有记事信息,包括电话号码、通话时间、联系人详情等。这种类型的数据文件通常以二进制格式保存,以便快速读取和写入。而".exe"文件,如"工程1.exe",通常是...
这个库使得与Highrise API的交互变得简单,让开发者能够轻松地创建、读取、更新和删除Highrise中的联系人、公司、任务、事件等数据。Highton-2.0.tar.gz是一个包含Highton库2.0版本源代码的压缩包文件。 ### Python...