【发布时间】:2011-06-19 07:37:18
【问题描述】:
我想从仅属于电话/SIM 卡的 ContactsContract API 读取联系人,并希望避免从 facebook 和 gmail 等其他应用同步联系人。我在模拟器上测试了我的代码,它运行良好,但在真实设备上它不返回任何结果。
ContentResolver cr = AndroidContext.getContext()
.getContentResolver();
Cursor nativeContacts = cr.query(RawContacts.CONTENT_URI,
new String[] { RawContacts._ID, RawContacts.VERSION, RawContacts.CONTACT_ID },
RawContacts.DELETED + "<> 1 AND " + RawContacts.CONTACT_ID
+ " IS NOT NULL AND " + RawContacts.ACCOUNT_NAME + " IS NULL AND "
+ RawContacts.ACCOUNT_TYPE + " IS NULL", null, null);
我猜在设备上默认帐户的帐户类型和名称不为空,解决方案是什么?
【问题讨论】:
-
所以我尝试了一个小示例应用程序来获取不同设备中使用的帐户类型和名称。在 HTC 上,帐户类型和 nme 是 com.htc.android.pcsc 和 com.android.sim,而在 Sony Xperia 上是 com.sonyerricson.contacts。所以似乎所有设备都使用不同的类型和名称,现在的问题是我如何获得默认帐户?我可以做这样的事情 AccountManager.getAccounts()[0] 并相信这将是设备上的默认帐户。
-
大家好,Rahul。我也想知道这个问题的答案。我只想从手机/sim 本身中提取联系信息。
-
Can I do something like this AccountManager.getAccounts()[0] and trust that this will be the default account on device.不,你不能。如果账户名为空,则无法从AccountManager.getAccounts()获取
标签: android contacts contactscontract