获取ContentProvider来获取手机所有的联系人及联系人信息

来源:互联网 发布:shell脚本编程教程 编辑:程序博客网 时间:2024/06/07 10:18

用ContentProvider内容提供者的技术来获取手机上的联系人,比如开发软件时,如果您的好友也是软件用户,则可以通过手机联系人直接添加好友

下面是实现步骤

这里就模仿一下获得

首先在你的界面打一个按钮来获得

 <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="获取手机联系人"        android:onClick="getContacts"        />

然后在相对应的的activity中编写以下代码

public class MainActivity extends AppCompatActivity {    private ContentResolver cr;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //获取内容访问者        cr = getContentResolver();    }    //定义获得联系人的方法    public void getContacts(View view){        //解析URI     content://com.android.contacts/raw_contacts是获得联系人的协议        //记得加content://        Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");        Cursor cursor=cr.query(uri,null,null,null,null);        while (cursor.moveToNext()){            //获得联系人的id            int _id=cursor.getInt(cursor.getColumnIndex("_id"));            //获得联系人姓名            String display_name=cursor.getString(cursor.getColumnIndex("display_name"));            //循环打印你所有的联系人            Log.i("test",_id+"    "+display_name);            //循环获得联系人的信息            //"content://com.android.contacts/raw_contacts/"+_id+"/data"  协议            Uri uriData=Uri.parse("content://com.android.contacts/raw_contacts/"+_id+"/data");            Cursor cursorData=cr.query(uriData,null,null,null,null);            while (cursorData.moveToNext()){                String mimetype=cursorData.getString(cursorData.getColumnIndex("mimetype"));                String data1=cursorData.getString(cursorData.getColumnIndex("data1"));                //如果是电话,则打印                //           vnd.android.cursor.item/phone_v2是联系人姓名,同样的还有email,住址等                if("vnd.android.cursor.item/phone_v2".equals(mimetype)){                    //                    Log.i("test","    "+mimetype+"   "+data1);                }            }        }    }}

因为现在的手机越来越高级,处理的比较好,所以最后记得添加权限

    <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>


当然,有一些手机的权限还是比较高还是拿不到联系人是有可能的、

原创粉丝点击