加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Android读取选择联系人的模版代码实现

发布时间:2020-12-14 23:28:47 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 1、创建SelectContactActivity类,在AndroidManifest.xml添加类 import java.util.ArrayList; import java.util.HashMap; import java.util.List; imp

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

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);  
            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、读取联系人需要获得权限

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、实现选择联系人的点击事件

     * 选择联系人的点击事件  
     */  
    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、最后说下注意点

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读