欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android读取选择联系人的模版代码实现,android模版,1、创建SelectCo

来源: javaer 分享于  点击 42811 次 点评:249

Android读取选择联系人的模版代码实现,android模版,1、创建SelectCo


1、创建SelectContactActivity类,在AndroidManifest.xml添加类```java 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;      }  }
 2、读取联系人需要获得权限  添加权限:<uses-permission android:name="android.permission.READ_CONTACTS"/> 3、前面java需要引入相关layout,模版如下注意姓名号码id:```xml    <?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、然后将点击的联系人投射到号码输入框```java @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()。

相关栏目:

用户点评