2010-07-16 78 views
2

我有一個AutoCompleteTextView,我希望它能自動填充輸入中的聯繫人姓名。問題是Contacts.People已被棄用。新的文檔說使用ContactsContract,但我找不到任何適當的教程。任何人都可以給我一個示例代碼或指向我一個合適的教程。如何在Android 2.1中使用聯繫人姓名填充AutoCompleteTextView

謝謝。

+0

我做類似的東西這裏! http://stackoverflow.com/questions/12854336/autocompletetextview-backed-by-cursorloader – toobsco42 2012-10-30 19:47:55

回答

1

Android的聯繫API 2.0

授予訪問

的應用程序可以查詢通訊記錄的訪問之前必須通過存儲在項目的根目錄下的AndroidManifest.xml文件授予。在uses-sdk語句的下面添加以下使用權限。

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

查詢Android的聯繫人數據庫

檢索存儲在聯繫人表存儲在規範化各個表的詳細信息,聯繫方式

基本聯繫信息。在Android 2.0中查詢基礎聯繫人記錄時,要查詢的URI存儲在ContactsContract.Contacts.CONTENT_URI中。 package higherpass.TestContacts;

import android.app.Activity; 
import android.content.ContentResolver; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 

public class TestContacts extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, 
       null, null, null, null); 
     if (cur.getCount() > 0) { 
      while (cur.moveToNext()) { 
       String id = cur.getString(
         cur.getColumnIndex(ContactsContract.Contacts._ID)); 
       String name = cur.getString(
         cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
       if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
        //Query phone here. Covered next 
       } 
      } 
     } 
    } 
} 

此應用程序從任何其他Android應用程序開始。首先在cr中創建一個ContentResolver實例。然後使用ContentResolver實例查詢數據庫並返回Cursor與聯繫人列表。該查詢是針對存儲在ContactsContract.Contacts.CONTENT_URI中的URI執行的。接下來檢查遊標是否包含記錄,如果是,則循環遍歷它們。記錄ID字段存儲在id變量中。這將在稍後用作where參數。顯示名稱字段也存儲在字符串名稱中。

瞭解更多關於Working With Android Contacts

相關問題