- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试按帐户类型从我的原始联系人中检索电话号码。使用下面的代码段,
String SELECTION =
ContactsContract.RawContacts.ACCOUNT_TYPE + "='" + Constants.ACCOUNT_TYPE + "'";
ContentResolver cr = this.getContentResolver();
Cursor cur = cr.query(ContactsContract.RawContacts.CONTENT_URI,
null, SELECTION, null, ContactsContract.Contacts.DISPLAY_NAME + " ASC");
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String type = cur.getString(cur.getColumnIndex(ContactsContract.RawContacts.ACCOUNT_TYPE));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
//String phone = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.e("number",name);
// hasPhoneNumber(cur.getString(cur.getColumnIndex(ContactsContract.RawContacts._ID)));
}
cur.close();
}
我可以检索与帐户类型相关联的所有联系人,但是 hasPhoneNumber(String contactId) 返回一个空光标。
private boolean hasPhoneNumber(String id) {
Cursor pCur = this.getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
new String[]{id}, null);
while (pCur.moveToNext()) {
String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
phoneNo = phoneNo.replace(" ", "");
if (Integer.parseInt(pCur.getString(
pCur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
Log.e("search", "found phone number");
pCur.close();
return true;
}
pCur.close();
}
return false;
}
但是,我决定使用 PHONE.CONTENT_URL 执行我的查询:
String SELECTION =
ContactsContract.RawContacts.ACCOUNT_TYPE + "='" + Constants.ACCOUNT_TYPE + "'";
ContentResolver cr = this.getContentResolver();
Cursor cur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, SELECTION, null, ContactsContract.Contacts.DISPLAY_NAME + " ASC");
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String type = cur.getString(cur.getColumnIndex(ContactsContract.RawContacts.ACCOUNT_TYPE));
String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String phone = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.e("number",phone);
// hasPhoneNumber(cur.getString(cur.getColumnIndex(ContactsContract.RawContacts._ID)));
}
cur.close();
}
除我的联系人列表中只有 3 个联系人与此类查询匹配外,这按预期工作,但 while 循环运行了 6 次,每个号码显示两次。我怎样才能最好地实现它以及我做错了什么?
最佳答案
您可以尝试使用 REMOVE_DUPLICATE_ENTRIES URI 上的参数:
Uri uri = Phone.CONTENT_URI.buildUpon()
.appendQueryParameter(ContactsContract.REMOVE_DUPLICATE_ENTRIES, "1")
.build();
但是,如果您有两个具有相同号码的原始联系人,我认为您无法消除重复项,因为上述查询参数仅使 Android 应用 GROUP BY (RawContacts._ID, DATA1)
查询。
关于java - 通过 PHONE.CONTENT_URI 检索联系人返回重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32271158/
在how to retrieve the list of contacts in android我看到代码允许您使用 ContactsContract.CommonDataKinds.Phone.CO
Android 中 RawContacts.CONTENT_URI 和 ContactsContract.Contacts.CONTENT_URI 有什么区别? 我正在尝试编写一个服务来监听 nati
我正在查看来自 Android docs 的以下代码 fragment . // Query for all people contacts using the Contacts.People con
我一直在尽我所能研究内容提供商,但我无法理解安装在手机上的其他应用程序如何访问我提供的内容的概念。其他应用怎么可能知道我的 CONTENT_URI 是什么??? 我正在制作一个联系人应用程序。其他应用
据我了解,Content Provider 是一种访问数据库内容的方式。 要访问数据库,需要权限部分。此权限部分由 CONTENT_URI 提供。因此,Content_URI 是一种授予数据库权限的方
我正在尝试更新现有联系人的显示名称和电子邮件 ID,我可以更新电子邮件地址,但显示名称没有更新,我使用的代码在这里。我已经尝试了很多更多的代码,但没有任何东西对我有用,请帮忙。 Cursor curs
我正在尝试按帐户类型从我的原始联系人中检索电话号码。使用下面的代码段, String SELECTION = ContactsContract.RawContacts.ACCO
我正在尝试查询 SMS 线程表,但我似乎没有使用正确的 URI。 查询 URI“content://sms/conversations”给我以下列: [thread_id, msg_count, sn
这两个 Contacts.CONTENT_FILTER_URI 和Android 中的 Contacts.CONTENT_URI? 最佳答案 您尝试过在线查找吗?在这里解释:http://develo
各位机器人开发者大家好!请你帮忙解答一个问题。我在努力 Cursor cursor = getContentResolver().query(Contacts.CONTENT_URI,CONTACT_
我是 android 的新手,正在开发一个需要所有拨出通话记录、号码、通话时长和联系人姓名的应用程序。所以我的问题是,我能否获取 Android 系统的 CallLog.Calls.CONTENT_U
因为我的应用程序使用来自 android.provider.ContactsContract.Data (API > 11) 和 ContactsContract.Contacts.CONTENT_U
您好,我正在 Android 联系人搜索模块中工作。我正在查询下方运行。 cur = context.getContentResolver().query(ContactsContract.Data.
public class MainActivity extends Activity { Button b; //FrameLayout fl; @Override p
你好下面的代码进入联系编辑页面在所有设备上都可以正常工作,但在某些设备上不起作用。请帮我。 Intent intent1 = new Intent(Intent.ACTION_EDIT, Con
我是一名优秀的程序员,十分优秀!