android開發 尋找通訊錄取得連絡人資訊

來源:互聯網
上載者:User

import android.app.Activity;

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;

import android.widget.TextView;

import android.widget.Toast;

public class PhoneBook extends Activity {

/*聲明四個UI變數與一個常數作為Activity接收回傳值用*/

  private TextView mTextView01;

  private Button mButton01;

  private EditText mEditText01;

  private EditText mEditText02;

  private static final int PICK_CONTACT_SUBACTIVITY = 2;

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle savedInstanceState)

  {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    /*透過findViewById建構子來建構一個TextView,兩個EditText,一個Button對象**/

    mTextView01 = (TextView)findViewById(R.id.myTextView1);

    mEditText01 = (EditText)findViewById(R.id.myEditText01);

    mEditText02 = (EditText)findViewById(R.id.myEditText02);

    mButton01 = (Button)findViewById(R.id.myButton1);

    /*設定onClickListener 讓使用者點選Button時搜尋連絡人*/

    mButton01.setOnClickListener(new Button.OnClickListener()

    {

     

//    @Override

    public void onClick(View v)

    {

      // TODO Auto-generated method stub

      /*建構Uri來取得聯絡人的資源位置*/

      // Uri uri = Uri.parse("content://contacts/people/");

      /*透過Intent來取得聯絡人資料並回傳所選的值*/

      //Intent intent = new Intent(Intent.ACTION_PICK, uri);

      /*開啟新的Activity並期望該Activity回傳值*/

      //startActivityForResult(intent, PICK_CONTACT_SUBACTIVITY);

      startActivityForResult

      (

          new Intent(Intent.ACTION_PICK,

             
android.provider.ContactsContract.Contacts.CONTENT_URI),

              PICK_CONTACT_SUBACTIVITY);

      }

    });

    }

  @Override

  protected void onActivityResult (int requestCode, int resultCode,
Intent data)

  {

    // TODO Auto-generated method stub

    try

    {

      switch (requestCode)

      {

        case PICK_CONTACT_SUBACTIVITY:

          final Uri uriRet = data.getData();

          if(uriRet != null)

          {

            try

            {

              /* 必須要有android.permission.READ_CONTACTS許可權 */

              Cursor c = managedQuery(uriRet, null, null, null,
null);

              /*將Cursor移到資料最前端*/

              c.moveToFirst();

              /*取得聯絡人的姓名*/

              String strName =
c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));

              /*將姓名寫入EditText01中*/

              mEditText01.setText(strName);

              /*取得聯絡人的電話*/

              int contactId =
c.getInt(c.getColumnIndex(ContactsContract.Contacts._ID));

              Cursor phones = getContentResolver().query (
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,
null, null );

              StringBuffer sb = new StringBuffer();

              int typePhone, resType;

              String numPhone;

              if (phones.getCount() > 0)

              {

                phones.moveToFirst();

                /* 2.0可以允許User設定多組電話號碼,但本範例只撈一組電話號碼作示範 */

                typePhone = phones.getInt (
phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE) );

                numPhone = phones.getString (
phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER) );

                resType =
ContactsContract.CommonDataKinds.Phone.getTypeLabelResource(typePhone);

                sb.append(getString(resType) +": "+ numPhone
+"/n");

                /*將電話寫入EditText02中*/

                mEditText02.setText(numPhone);

                }

              else

              {

                sb.append("no Phone number found");

                }

              /*Toast是否讀取到完整的電話種類與電話號碼*/

              Toast.makeText(this, sb.toString(),
Toast.LENGTH_SHORT).show();

              }

            catch(Exception e)

            {

              /*將錯誤資訊在TextView中顯示*/

              mTextView01.setText(e.toString());

              e.printStackTrace();

              }

            }

          break;

          default: break;

          }

      }

    catch(Exception e)

    {

      e.printStackTrace();

      }

    super.onActivityResult(requestCode, resultCode, data);

    }

}

-------------------------

string.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

  <string name="app_name">PhoneBook</string>

  <string name="str_button1">搜尋</string>

  <string name="str_title">我的連絡人</string>

  <string name="str_name">姓名</string>

  <string name="str_telephone">電話號碼</string>

</resources>

-----------------------------

main.xml

<?xml version="1.0" encoding="utf-8"?>

<AbsoluteLayout

  android:id="@+id/widget32"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  xmlns:android="http://schemas.android.com/apk/res/android"

>

  <TextView

    android:id="@+id/myTextView1"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="@string/str_title"

    android:layout_x="0px"

    android:layout_y="0px"

  >

  </TextView>

  <EditText

    android:id="@+id/myEditText01"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="@string/str_name"

    android:textSize="18sp"

    android:layout_x="0px"

    android:layout_y="22px"

  >

  </EditText>

  <EditText

    android:id="@+id/myEditText02"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/str_telephone"

    android:textSize="18sp"

    android:layout_x="0px"

    android:layout_y="82px"

  >

  </EditText>

  <Button

    android:id="@+id/myButton1"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="@string/str_button1"

    android:layout_x="10px"

    android:layout_y="142px"

  >

  </Button>

</AbsoluteLayout>

------------------------------------

AndroidManifest.xml

注意在</application>後要加上

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

<!--取得讀取通訊錄的許可權 -->

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.