獲取ContentProvider來獲取手機所有的聯繫人及聯繫人信息

用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>


當然,有一些手機的權限還是比較高還是拿不到聯繫人是有可能的、

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章