android studio for android learning (十二) 檢視並獲取聯絡人資訊
阿新 • • 發佈:2019-01-24
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;
}
}
}