直接貼代碼:
- public class QueryActivity extends Activity {
- private EditText et;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.query);
- et = (EditText) this.findViewById(R.id.query_et);
- }
- public void select(View view) {
- Intent intent = new Intent(this, SelectContactActivity.class);
- startActivityForResult(intent, 0);
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (data != null) {
- String number = data.getStringExtra("number");
- et.setText(number);
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
- }
- public class SelectContactActivity extends Activity {
- private ListView lv;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- setContentView(R.layout.select_contact);
- super.onCreate(savedInstanceState);
- lv = (ListView) findViewById(R.id.lv_select_contact);
- // TODO:如果聯繫人比較多 需要花費一定的時間,最好放在子線程裏面執行.
- ContactInfoProvider provider = new ContactInfoProvider(this);
- final List<ContactInfo> infos = provider.getContacts();
- String[] numbers = new String[infos.size()];
- for (int i = 0; i < infos.size(); i++) {
- numbers[i] = infos.get(i).getName() + "\n"
- + infos.get(i).getNumber();
- }
- lv.setAdapter(new ArrayAdapter<String>(this, R.layout.contact_item,
- R.id.tv_contact_item_info, numbers));
- lv.setOnItemClickListener(new OnItemClickListener() {
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- String number = infos.get(position).getNumber();
- Intent data = new Intent();
- data.putExtra("number", number);
- setResult(0, data);
- finish();
- }
- });
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:text="選擇聯繫人"
- android:textColor="#66ff00"
- android:textSize="28sp" >
- </TextView>
- <View
- android:layout_width="fill_parent"
- android:layout_height="1dip"
- android:layout_marginTop="5dip"
- android:background="@drawable/devide_line"
- android:paddingTop="5dip" >
- </View>
- <ListView
- android:id="@+id/lv_select_contact"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_marginTop="5dip" >
- </ListView>
- </LinearLayout>
- public class ContactInfoProvider {
- private Context context;
- public ContactInfoProvider(Context context) {
- this.context = context;
- }
- /**
- * 獲取所有聯繫人信息的業務方法
- * @return
- */
- public List<ContactInfo> getContacts() {
- List<ContactInfo> contactInfos = new ArrayList<ContactInfo>();
- // 1.查詢raw_contacts表 獲取所有聯繫人的id
- Uri rawUri = Uri.parse("content://com.android.contacts/raw_contacts");
- Uri dataUri = Uri.parse("content://com.android.contacts/data");
- Cursor idCursor = context.getContentResolver().query(rawUri,
- new String[] { "contact_id" }, null, null, null);
- while (idCursor.moveToNext()) {
- String id = idCursor.getString(0); // 得到聯繫人的id
- ContactInfo info = new ContactInfo();
- Cursor dataCursor = context.getContentResolver().query(dataUri,
- null, "raw_contact_id=?", new String[] { id }, null);
- while (dataCursor.moveToNext()) {
- String data1 = dataCursor.getString(dataCursor
- .getColumnIndex("data1"));
- String mime = dataCursor.getString(dataCursor
- .getColumnIndex("mimetype"));
- if ("vnd.android.cursor.item/phone_v2".equals(mime)) {
- info.setNumber(data1);
- } else if ("vnd.android.cursor.item/name".equals(mime)) {
- info.setName(data1);
- }
- }
- dataCursor.close();
- contactInfos.add(info);
- info = null;
- }
- idCursor.close();
- return contactInfos;
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:orientation="vertical" >
- <TextView
- android:gravity="center_horizontal"
- android:text="聯繫人信息"
- android:id="@+id/tv_contact_item_info"
- style="@style/text_content_style" />
- </LinearLayout>
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <style name="text_title_style">
- <item name="android:layout_width">fill_parent</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:textColor">#66ff00</item>
- <item name="android:textSize">28sp</item>
- </style>
- <style name="text_content_style" parent="@style/text_title_style">
- <item name="android:paddingTop">5dip</item>
- <item name="android:textSize">22sp</item>
- </style>
- </resources>