2012-07-19 66 views
0

我想要一个可滚动的联系人列表,当点击一个按钮时弹出。我无法弄清楚如何获得它以及内容解析器,托管查询和适配器​​如何工作。通过按钮获取联系人

我试图用下面的代码:

package com.hapybay.rad; 

import android.app.Activity; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.database.Cursor; 

public class startingPoint extends Activity { 
    Button redcandle; 
    private ListView mContactList; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     /*Obtain handles to UI objects (Constructor)*/ 
     redcandle = (Button) findViewById(R.id.button1); 

     /*Register handle for UI element*/ 
     redcandle.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       populateContactList(); 
      } 
     }); 
    } 

    private void populateContactList() { 
     // Build adapter with contact entries 
     Cursor cursor = getContacts(); 
     String[] fields = new String[] { 
       ContactsContract.Data.DISPLAY_NAME 
     }; 
     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.contact_entry, cursor, 
       fields, new int[]{R.id.contactEntryText}); 
     mContactList.setAdapter(adapter); 
    } 

    private Cursor getContacts() 
    { 
     // Run query 
     Uri uri = ContactsContract.Contacts.CONTENT_URI; 
     String[] projection = new String[] { 
       ContactsContract.Contacts.LOOKUP_KEY, 
       ContactsContract.Contacts.DISPLAY_NAME }; 
     String selection = null; 
     String[] selectionArgs = null; 
     String sortOrder = null; 

     return managedQuery(uri, projection, selection, selectionArgs, sortOrder); 
    } 
} 

回答

0
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
startActivityForResult(intent, PICK_CONTACT); 

,并覆盖这在你的活动

public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 

    switch (reqCode) { 
    case (PICK_CONTACT) : 
     if (resultCode == Activity.RESULT_OK) { 
     Uri contactData = data.getData(); 
     Cursor c = managedQuery(contactData, null, null, null, null); 
     if (c.moveToFirst()) { 
      String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      // TODO Whatever you want to do with the selected contact name. 
     } 
     } 
     break; 
    } 
} 

不要忘记添加的权限

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