使用内容提供器获取系统联系人

作者: 大话程序 | 来源:发表于2016-05-16 08:39 被阅读266次

    系统联系人是系统中共享出来的数据,可以通过内容提供器读取出来

    • 编写布局文件
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <ListView
            android:id="@+id/contacts_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </ListView>
    
    </RelativeLayout>
    
    
    • 编写使用现有的内容提供器来读取系统联系人
    public class MainActivity extends Activity {
        //ListView控件,来显示联系人列表
        ListView contactsView;
        //LIstView的适配器
        ArrayAdapter<String> adapter;
        //存储联系人的集合
        List<String> contactsList = new ArrayList<String>();
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            contactsView = (ListView) findViewById(R.id.contacts_view);
            //读取系统联系人
            readContacts();
            //创建适配器
            adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, contactsList);
            //为ListView适配适配器
            contactsView.setAdapter(adapter);
        }
    
        private void readContacts() {
            Cursor cursor = null;
            try {
                //查询联系人
                cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null, null, null, null);
                while (cursor.moveToNext()) {
                    //获取联系人姓名
                    String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    //获取联系人手机号
                    String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    contactsList.add(displayName + "\n" + number);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                if (cursor != null) {
                    cursor.close();
                }
            }
        }
    
    }
    

    ContactsContract.CommonDataKinds.Phone类已经帮我们做好了封装,提供了一个CONTENT_URI常量,而这个常量就是使用Uri.parse() 解析出来的
    联系人姓名这一列对应的常量是ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
    联系人手机号对应的常量是ContactsContract.CommonDataKinds.Phone.NUMBER

    相关文章

      网友评论

        本文标题:使用内容提供器获取系统联系人

        本文链接:https://www.haomeiwen.com/subject/cycbrttx.html