2012-02-02 105 views
0

如何獲取從QuickContact對話框打開應用程序的聯繫人數據?我正在開發一個短信應用程序,並且我想在應用程序啓動時使用此聯繫人的號碼填充收件人的字段。Android QuickContact對話框

回答

0

排序它。
要獲取聯繫人的號碼使用:

String launchContactNo = getIntent().getDataString(); 

這將返回:

smsto:5556 

(這是聯繫人的號碼)

0

您可以在自己的列表視圖中獲取電話簿中的所有數據,以便您可以從列表中選擇聯繫人並直接顯示在收件人字段中。

這裏是代碼檢索所有聯繫方式進入你自己的列表視圖如下:

public class ContactListDemo extends ListActivity implements Runnable{ 

private List<Contact> contacts = null; 
private Contact con; 
private ContactArrayAdapter cAdapter; 
private ProgressDialog prog = null; 
private Context thisContext = this; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    prog = ProgressDialog.show(this, "ContactListDemo", "Getting Contacts", true, false); 
    Thread thread = new Thread(this); 
    thread.start(); 
} 

public void run() { 
    if (contacts == null) 
    { 
     contacts = fillContactsList(); 
    } 
    handler.sendEmptyMessage(0); 
} 

private List<Contact> fillContactsList() { 
    List<Contact> tmpList = new ArrayList<Contact>(); 
    Cursor c = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
    while(c.moveToNext()){ 
     String ContactID = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID)); 
     String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     String hasPhone =c.getString(
       c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
     if(Integer.parseInt(hasPhone) == 1){ 

      Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null, 
        ContactsContract.CommonDataKinds.Email.CONTACT_ID+ " = " + ContactID, null, null); 
      while (emails.moveToNext()) 
      { 
       // This would allow you get several email addresses 
       String emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
       con = new Contact(); 
       con.setName(name); 
       con.setEmail(emailAddress); 

       tmpList.add(con); 
       emails.close();   
      } 
     } 

    } 
    c.close(); 
    Collections.sort(tmpList); 
    return tmpList; 
} 

private Handler handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     prog.dismiss(); 
     cAdapter = new ContactArrayAdapter(thisContext, R.layout.listitemlayout, contacts); 

     cAdapter.setNotifyOnChange(true); 
     //ContactArrayAdapter(thisContext, android.R.layout.simple_list_item_multiple_choice, contacts); 
     getListView().setFastScrollEnabled(true); 
     setListAdapter(cAdapter); 

    } 
}; 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    TextView label = ((TwoLineListItem) v).getText2(); 
    TextView label1 = ((TwoLineListItem) v).getText1(); 
    String phoneNumber = label.getText().toString(); 
    String name = label1.getText().toString(); 
    // int phoneNumber1 = label.getId(); 
    Toast.makeText(this, "Selected " + name +"id" + phoneNumber, Toast.LENGTH_SHORT).show(); 
} 
+0

對不起,如果我沒有說清楚。我試圖從QuickContact對話框中獲取啓動應用的個人號碼。就像默認的SMS應用程序如何使用從QuickContact對話框啓動撰寫郵件的聯繫人姓名和電話號碼填充收件人字段一樣。儘管爲代碼歡呼。 – jakedemus 2012-02-02 06:20:04

+0

嗨smit,爲什麼'ContactsContract.Contacts.CONTENT_URI'不在我的應用程序中工作? – 2012-02-02 06:21:27

+1

肯定確保你已經添加了android.permission.READ_CONTACTS到你的AndroidManifest.xml @Swan – OnkarDhane 2012-02-02 06:23:33