取得联系人_id,姓名和电话,代码如下:
public class DaoService {
private Context context;
public static final String[] PEOPLE_PROJECTION = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.Contacts.DISPLAY_NAME
};
public DaoService(Context context) {
super();
this.context = context;
}
public Cursor findAll() {
ContentResolver resolver = context.getContentResolver();
//可以查出非常多非常多的字段,用下面测试下酒知道了
Cursor cursor = resolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, PEOPLE_PROJECTION, null, null, null);
return cursor;
}
}
可对上面进行测试:
public class DaoServiceTest extends AndroidTestCase {
public void testFindALl() {
Context context = this.getContext();
DaoService daoService = new DaoService(context);
Cursor cursor = daoService.findAll();
int number = cursor.getColumnCount();
for(int i=0; i<number><span lang="EN-US" style="font-size: 10pt; font-family: " courier new mso-font-kerning:> </span></number>
System.out.println(cursor.getColumnName(i));
}
}
}
接下来,一个实例:
用startActivityForResult(new Intent(Intent.ACTION_PICK,uri),requestcode)来打开一个Acitivy,选择后返回一个uri,根据uri来取得联系人的名字、号码等。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) this.findViewById(R.id.myButton1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
displayNew();
}
});
}
public void displayNew() {
startActivityForResult(new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI),200); //如果是这个uri,则取号码要根据ID去取了
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 200:
Uri uri = data.getData();
//对resolver.query的包装,为你自动管理query
cursor = managedQuery(uri ,null, null, null, null);
cursor.moveToFirst();
String name = cursor.getString(cursor.getColumnIndex(Contacts.DISPLAY_NAME));
Toast.makeText(this,"name:" + name,1).show();
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
}