1. 程式人生 > >android studio for android learning (十二) 檢視並獲取聯絡人資訊

android studio for android learning (十二) 檢視並獲取聯絡人資訊

1.點選一個按鈕就會顯示系統的聯絡人列表,當用戶點選聯絡人之後就會看到詳細的名字和電話。

2.具體的程式碼如下:首先在AndroidManifest.xml檔案中配置使用者許可權。

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

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.dragon.testevent.MainActivity">
<Button android:id="@+id/bn" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="檢視聯絡人" />
<!--顯示聯絡人姓名的文字框--> <EditText android:id="@+id/show" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" android:cursorVisible="false" />
<!--顯示聯絡人電話號碼的文字框--> <EditText android:id="@+id/phone" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false" android:cursorVisible="false" /> </LinearLayout>

MainActivity.java

package com.dragon.testevent;

import android.app.Activity;
import android.content.CursorLoader;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends Activity {
    final int PICK_CONTACT = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //獲取按鈕元件
        Button bn = (Button) findViewById(R.id.bn);
//繫結監聽事件
        bn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View arg0){
                Intent intent = new Intent();
//                intent--Action是表示抽象要完成的動作
                intent.setAction(Intent.ACTION_GET_CONTENT);
//                intent--Type:型別
                intent.setType("vnd.android.cursor.item/phone");
                startActivityForResult(intent,PICK_CONTACT);
            }
        });
    }
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode,resultCode,data);
        switch(requestCode){
            case(PICK_CONTACT):
                if(resultCode==Activity.RESULT_OK){
//                    獲取返回資料
                    Uri contactData = data.getData();
                    CursorLoader cursorLoader = new CursorLoader(this,contactData,null,null,null,null);
//                    查詢聯絡人的名字
                    Cursor cursor = cursorLoader.loadInBackground();

                    if(cursor.moveToFirst()){
                        String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
                        //獲取聯絡人的名字
                        String name =cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
                        String phoneNumber = "No phone Number";
//                        根據聯絡人查詢聯絡人的詳細資訊
                        Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"="+contactId,null,null);
                        if(phones.moveToFirst()){
//                            提取電話號碼
                            phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        }
//                        關閉遊標
                        phones.close();
                        EditText show = (EditText)findViewById(R.id.show);
//                        顯示聯絡人的名稱
                        show.setText(name);
                        EditText phone=(EditText)findViewById(R.id.phone);
//                        顯示聯絡人的號碼
                        phone.setText(phoneNumber);
                    }
//                    關閉遊標
                    cursor.close();
                }
                break;
        }
    }
}

具體的程式碼分析以寫註釋,大家可以去測試用下。