我正在使用ContactsContract.Profile.CONTENT_URI尝试获取用户的个人资料信息。它运行但返回零行。
我怀疑这是一个权限问题,其中我为我的应用设置的权限未被提供商看到。我有(以及其他权限):
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
我已尝试删除这两个权限,但我没有收到任何错误(或任何返回的行)。我也试过拼错第二个。同样的事情。
以下是执行查询的代码:
private void fetchProfile ()
{
logD ("EA profiles:"); // wrapper on Log.d()
ContentResolver cr = getContentResolver();
Uri uri = Uri.withAppendedPath (ContactsContract.Profile.CONTENT_URI,
ContactsContract.Contacts.Data.CONTENT_DIRECTORY);
final String[] projection =
{
ContactsContract.Contacts._ID, // 0
ContactsContract.CommonDataKinds.Email.DISPLAY_NAME, // 1
ContactsContract.CommonDataKinds.Email.ADDRESS, // 2
ContactsContract.CommonDataKinds.Email.IS_PRIMARY, // 3
};
String where = ContactsContract.Contacts.Data.MIMETYPE + "= ?";
final String args[] = {
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE,
};
String order = ContactsContract.Contacts.Data.IS_PRIMARY + " DESC";
Cursor cursor = cr.query (uri, projection, where, args, order);
while (cursor.moveToNext())
{
long id = cursor.getLong(0);
String name = cursor.getString(1);
String addr = cursor.getString(2);
int isPrimary = cursor.getInt(3);
logD (" id " + id + ", name " + name + ", addr " + addr + ", isP " + isPrimary);
}
cursor.close();
}
我在三种不同的Android设备上试过这个。相同的行为。有任何想法吗?谢谢!
答案 0 :(得分:0)
按照Accessing Contacts Data / Retrieve Contact Details:
中的说明尝试使用Uri而不是:
Uri uri = Uri.withAppendedPath (
ContactsContract.Profile.CONTENT_URI,
ContactsContract.Contacts.Data.CONTENT_DIRECTORY);
// uri == content://com.android.contacts/profile/data
使用:
Uri uri = ContactsContract.Data.CONTENT_URI;
// uri == content://com.android.contacts/data