0
如何獲取從QuickContact對話框打開應用程序的聯繫人數據?我正在開發一個短信應用程序,並且我想在應用程序啓動時使用此聯繫人的號碼填充收件人的字段。Android QuickContact對話框
如何獲取從QuickContact對話框打開應用程序的聯繫人數據?我正在開發一個短信應用程序,並且我想在應用程序啓動時使用此聯繫人的號碼填充收件人的字段。Android QuickContact對話框
排序它。
要獲取聯繫人的號碼使用:
String launchContactNo = getIntent().getDataString();
這將返回:
smsto:5556
(這是聯繫人的號碼)
您可以在自己的列表視圖中獲取電話簿中的所有數據,以便您可以從列表中選擇聯繫人並直接顯示在收件人字段中。
這裏是代碼檢索所有聯繫方式進入你自己的列表視圖如下:
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();
}
對不起,如果我沒有說清楚。我試圖從QuickContact對話框中獲取啓動應用的個人號碼。就像默認的SMS應用程序如何使用從QuickContact對話框啓動撰寫郵件的聯繫人姓名和電話號碼填充收件人字段一樣。儘管爲代碼歡呼。 – jakedemus 2012-02-02 06:20:04
嗨smit,爲什麼'ContactsContract.Contacts.CONTENT_URI'不在我的應用程序中工作? – 2012-02-02 06:21:27
肯定確保你已經添加了android.permission.READ_CONTACTS到你的AndroidManifest.xml @Swan – OnkarDhane 2012-02-02 06:23:33