gpt4 book ai didi

Android 3.0 - 如何通过 ContactsContract 检索所有联系人

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:28:26 26 4
gpt4 key购买 nike

我正在开发一个 Android Honeycomb (v3.0) 应用程序,该应用程序需要显示存储在设备上注册的 Google 帐户中的所有联系人。我遇到的问题之一是我只能检索“我的联系人”、“在 Android 中加星标”和“其他联系人”中可用的联系人。我还希望能够从“目录”中检索联系人。我相信“目录”部分是 Google 为希望向其他人提供其域内所有成员/员工的目录的组织和公司提供的一项功能。请看下面的截图:

Directory

到目前为止,我的 list 文件中有以下行:

<uses-permission android:name="android.permission.READ_CONTACTS" />

我试过使用这段代码:

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
}
cursor.close();

在我的例子中,“我的联系人”和“在 Android 中加星标”是空的。但是获取到“Other Contacts”中的(1)联系人。不过,“目录”包含数百个未检索到的联系人。

我的问题:有什么方法可以确保“目录”中的联系人也被检索到吗?我知道我可以简单地使用网络浏览器复制联系人然后同步将它们添加到设备,但如果将新联系人添加到“目录”,我每次都必须手动执行此操作,所以这对我来说不是一个很好的选择。请指教。

最佳答案

看下面的代码

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
public class TestContacts extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur
.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur
.getString(cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if (("1")
.equals(cur
.getString(cur
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))) {
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[] { id }, null);
int i = 0;
int pCount = pCur.getCount();
String[] phoneNum = new String[pCount];
String[] phoneType = new String[pCount];
while (pCur.moveToNext()) {
phoneNum[i] = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
phoneType[i] = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));

i++;
}
}

关于Android 3.0 - 如何通过 ContactsContract 检索所有联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com