0
我正在開發一個應用程序,我需要將所有聯繫人顯示給用戶。 應該給用戶一個選擇多個聯繫人的選項,當他按下完成時,所有的聯繫人都必須存儲在數據庫中。從Android手機中提取選定的聯繫人
誰能幫我用代碼來顯示,並提取選定的聯繫人?? {沒有一個必須選擇,即使THR是多個同名的無}
如果妳可以只讓選定的聯繫人的名字要顯示在舉杯{我會做我自己的DB部分},我會很感激......
plz幫助.......
我正在開發一個應用程序,我需要將所有聯繫人顯示給用戶。 應該給用戶一個選擇多個聯繫人的選項,當他按下完成時,所有的聯繫人都必須存儲在數據庫中。從Android手機中提取選定的聯繫人
誰能幫我用代碼來顯示,並提取選定的聯繫人?? {沒有一個必須選擇,即使THR是多個同名的無}
如果妳可以只讓選定的聯繫人的名字要顯示在舉杯{我會做我自己的DB部分},我會很感激......
plz幫助.......
您需要創建自己的ListView與CHOICE_MODE_MULTIPLE
聯繫,並使用CheckTextView
作爲單個項目佈局。下面是一個完整的例子。它在操作欄上有完成按鈕。
public class PickContactsActivity extends ListActivity {
private SimpleCursorAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getListView().setItemsCanFocus(false);
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
new String[] { ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME},
null, null, "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME + ") ASC");
mAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_multiple_choice,
cursor,
new String[] { ContactsContract.Contacts.DISPLAY_NAME },
new int[] { android.R.id.text1 }, 0);
setListAdapter(mAdapter);
}
private List<Uri> pickContacts() {
SparseBooleanArray a = getListView().getCheckedItemPositions();
List<Uri> contacts = new ArrayList<Uri>();
for (int i=0; i<a.size(); i++) {
if (a.valueAt(i)) {
Cursor c = (Cursor)mAdapter.getItem(a.keyAt(i));
Long id = c.getLong(c.getColumnIndex(ContactsContract.Contacts._ID));
contacts.add(ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id));
}
}
return contacts;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_pick:
List<Uri> contacts = pickContacts();
StringBuilder sb = new StringBuilder("Selected Contacts\n");
for(Uri c : contacts)
sb.append(c).append("\n");
Toast.makeText(this, sb.toString(), Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
的完成動作在RES /菜單/ main.xml中定義
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_pick" android:showAsAction="ifRoom" android:title="Done"/>
</menu>
最後,確保你有閱讀接觸的權限。這種加入AndroidManifest.xml中
<uses-permission android:name="android.permission.READ_CONTACTS"/>
只是刪除,顯示敬酒消息的代碼,並使用URI的列表執行數據庫操作。
非常感謝:)它像一個魅力:)感謝噸:) :) – worried
先生,有一個prblm ..正在顯示的聯繫人的順序不是按字母順序..它的聯繫人的順序有已被添加...你可以幫助嗎? – worried
我編輯了答案,將Order By子句添加到查詢中。這將通過DISPLAY_NAME對聯繫人進行排序。 Plz接受我的答案,如果它適合你。 –