android操作手機通訊錄

jopen 12年前發布 | 7K 次閱讀 html5未來 減肥應用

手機通訊錄的操作是經常被用到的,例如添加聯系人,刪除聯系人或者取得聯系人信息。類似的操作還有收藏夾的操作,下面就針對通訊錄的操作來做個小例子。同樣的這次也會使用到內容提供者的知識。

1.要操作通信錄就要得到授權,也就是讀或者寫通訊錄的權力。這里也需要使用Junit

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.lxh.contact" android:versionCode="1" android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <uses-library android:name="android.test.runner" />

    </application>
    <uses-sdk android:minSdkVersion="8" />
    <instrumentation android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="org.lxh.contact" android:label="TestforMyApp" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
</manifest> 
2.開始取得通訊錄里的內容,主要就是名稱,號碼,郵箱
package org.lxh.contact;

import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.test.AndroidTestCase;
import android.util.Log;


public class TestContact extends AndroidTestCase{ //junit測試類
  public void testFind() throws Throwable{
      Uri uri=ContactsContract.Contacts.CONTENT_URI;  //通訊錄的uri,這是推薦的常量
      ContentResolver resol=this.getContext().getContentResolver();
      Cursor cursor=resol.query(uri, null, null, null, null);
      //取得通訊錄里的內容
      while(cursor.moveToNext()){
          StringBuffer buf=new StringBuffer(); //實例化一個可變字符串StringBuffer
          //取得聯系人id,每個條目都有一個唯一的id(主鍵)
          String contactId=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
          //取得聯系人的顯示名稱
          String name=cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
          buf.append("id:"+contactId).append(",name:"+name);
          //取得聯系人的號碼
          Cursor phone=resol.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,  null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID+" = "+contactId,null,null);
          while(phone.moveToNext()){
              String phonum=phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
              buf.append(phonum);
          }
          phone.close();
          //取得聯系人的email
          Cursor email=resol.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI ,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID+" = "+contactId,null,null);
          while(email.moveToNext()){
              String mail=email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
              buf.append(",mail:"+mail);

          }
          email.close();
          Log.i("TestContact",buf.toString());
      }
      cursor.close();

  }
}

看這個查詢過程可以知道,其實這里有2張表,一張存著id和name,一張存著號碼,郵箱之類的信息。id為主鍵,后面的表用它作為外鍵。至于刪除和其他操作你們可以自己看文檔。我這里就不說了。

轉自:http://blog.csdn.net/chenwill3/article/details/7171833

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!