如何从 android 的电话簿中选择联系人号码到我的应用程序中?
Posted
技术标签:
【中文标题】如何从 android 的电话簿中选择联系人号码到我的应用程序中?【英文标题】:How to pick contact number from phone-book of android in to my application? 【发布时间】:2011-11-03 09:21:04 【问题描述】:全部 我想从我的应用程序数据库中的android电话簿中获取号码.. 我已经用下面的代码试过了,但是这里我得到的是人的名字,而不是我想要电话簿中的号码,并想把它存储在我的数据库中..如何实现这一点????任何人都可以指导我..
@Override
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())
// other data is available for the Contact. I have decided
// to only get the name of the Contact.
String name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.CONTENT_TYPE));
Toast.makeText(getApplicationContext(), name, Toast.LENGTH_SHORT).show();
提前致谢--
【问题讨论】:
【参考方案1】:试试这个代码,
@Override 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 id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); if (hasPhone.equalsIgnoreCase("1")) Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id, null, null); phones.moveToFirst(); String cNumber = phones.getString(phones.getColumnIndex("data1"));
【讨论】:
okey.....如果我想在相同布局的textview上显示该特定数字,那么如何实现它???? 完成..它的工作..非常感谢.....但是光标正在移动到下一个联系人,它正在为所有联系人检索相同的号码......【参考方案2】:我知道这是一个老问题,但我认为以下资源 来自 Android 在这个问题上非常有帮助。 “奖金”部分是 raj 正在寻找的确切代码。我认为这个链接应该对以后看到这个问题的人有所帮助,特别是如果你不了解 CapDroid 的 sn-p。
http://developer.android.com/training/basics/intents/result.html
【讨论】:
很好的例子!谢谢【参考方案3】:这将对您有所帮助:
public void onActivityResult(int reqCode, int resultCode, Intent data) super.onActivityResult(reqCode, resultCode, data);
try
if (resultCode == Activity.RESULT_OK)
Uri contactData = data.getData();
Cursor cur = managedQuery(contactData, null, null, null, null);
ContentResolver contect_resolver = getContentResolver();
if (cur.moveToFirst())
String id = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String name = "";
String no = "";
Cursor phoneCur = contect_resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]id, null);
if (phoneCur.moveToFirst())
name = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
no = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.e("Phone no & name :***: ", name + " : " + no);
txt.append(name + " : " + no + "\n");
id = null;
name = null;
no = null;
phoneCur = null;
contect_resolver = null;
cur = null;
// populateContacts();
catch (IllegalArgumentException e)
e.printStackTrace();
Log.e("IllegalArgumentException::", e.toString());
catch (Exception e)
e.printStackTrace();
Log.e("Error :: ", e.toString());
【讨论】:
以上是关于如何从 android 的电话簿中选择联系人号码到我的应用程序中?的主要内容,如果未能解决你的问题,请参考以下文章