Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> ContactsContract類Android 2.0 API改變

ContactsContract類Android 2.0 API改變

日期:2016/3/14 9:48:53      編輯:高級開發

 從android 2.0 SDK開始有關聯系人provider的類變成了ContactsContract,雖然老的android.provider.Contacts能用,但是在SDK中標記為為deprecated將被放棄不推薦的方法,而從Android 2.0及API Level為5開始新增了android.provider.ContactsContract來代替原來的方法。不過android123表示大家做兩手准備,畢竟目前70%的設備以及Ophone 1.0和1.5均不支持ContactsContract。

網上現成的例子如下,不過調試時考慮到效率字符串拼接不要使用String,而是StringBuffer,同時內層的Cursor寫到外面可以提高GC的效率。代碼如下在android 2.0 SDK中可以使用。

String string;

ContentResolver cr = getContentResolver();

Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

while (cursor.moveToNext())
{

int nameFIEldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String strName = cursor.getString(nameFIEldColumnIndex);
string += strName;


String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); //獲取聯系人的ID號,其實就是content中的最後的/幾號,在SQLite中的數據庫ID
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
+ contactId, null, null);

while (phone.moveToNext())
{
String strPhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); //手機號碼字段,SDK中有定義,可能有多個手機號碼?
string += strPhoneNumber;
}
string += "\n";
phone.close();
}
cursor.close();

Toast.makeText(android123.this,string,1/*long*/).show();

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved