Android讀取選擇聯系人的模版代碼實現
1、創建SelectContactActivity類,在AndroidManifest.xml添加類
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import android.app.Activity; import android.content.ContentResolver; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; public class SelectContactActivity extends Activity { private ListView lv_select_contact; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_select_contact); lv_select_contact = (ListView) findViewById(R.id.lv_select_contact); final List<Map<String,String>> data = getContactInfo(); lv_select_contact.setAdapter(new SimpleAdapter(this, data, R.layout.contact_item_view, new String[]{"name","phone"}, new int[]{R.id.tv_name,R.id.tv_phone})); lv_select_contact.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String phone = data.get(position).get("phone"); Intent data = new Intent(); data.putExtra("phone", phone); setResult(0, data); //關閉掉當前的頁面 finish(); } }); } /** * 讀取手機里面的聯系人 * @return */ private List<Map<String, String>> getContactInfo() { List<Map<String, String>> list = new ArrayList<Map<String,String>>(); //得到一個內容解析器 ContentResolver resolver = getContentResolver(); //raw_contact uri Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); Uri uriData = Uri.parse("content://com.android.contacts/data"); Cursor cursor = resolver.query(uri, new String[]{"contact_id"}, null, null, null); while(cursor.moveToNext()){ String contact_id = cursor.getString(0); if(contact_id != null){ //具體的某一個聯系人 Map<String, String> map =new HashMap<String, String>(); Cursor dataCursor = resolver.query(uriData, new String[]{"data1","mimetype"}, "contact_id=?", new String[]{contact_id}, null); while(dataCursor.moveToNext()){ String data1 = dataCursor.getString(0); String mimetype = dataCursor.getString(1); System.out.println("data1=="+data1+"mimetype=="+mimetype); if("vnd.android.cursor.item/name".equals(mimetype)){ //聯系人的姓名 map.put("name", data1); }else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){ //聯系人的電話號碼 map.put("phone", data1); } } list.add(map); dataCursor.close(); } } cursor.close(); return list; } } </pre>
2、讀取聯系人需要獲得權限
添加權限:<uses-permission android:name="android.permission.READ_CONTACTS"/>
3、前面java需要引入相關layout,模版如下注意姓名號碼id:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:background="#8866ff00" android:gravity="center" android:textColor="#000000" android:textSize="20sp" android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="55dip" android:text="選擇聯系人"/> <ListView android:verticalSpacing="10dip" android:layout_marginTop="15dip" android:numColumns="3" android:id="@+id/lv_select_contact" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
4、實現選擇聯系人的點擊事件
xml的Button中 android:onClick="selectContact" ,注意返回startActivityForresult()方法
* 選擇聯系人的點擊事件 */ public void selectContact(View view){ Intent intent = new Intent(this,SelectContactActivity.class); startActivityForResult(intent, 0); }
5、然后將點擊的聯系人投射到號碼輸入框
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(data == null){ return ; } //et_setup3_phone是輸入框的id String phone = data.getStringExtra("phone").replace("-", ""); et_setup3_phone.setText(phone); }
6、最后說下注意點
在獲取完號碼后,整個流程就結束了,在再次引用號碼時最好toString().trim()操作,然后如果有必要可以判空和保存,保存要注意commit()。
本文由用戶 n6xb 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!