【发布时间】:2016-10-26 09:35:25
【问题描述】:
在我的应用程序中,我想显示一个选项,例如将联系人与应用程序同步。
它应该将所有联系人与我的应用同步(就像 Facebook 在我们转到 Find Friends 页面的 Contact 选项卡时所做的那样)。
所以当所有联系人同步后,我会将联系人与服务器匹配,服务器将返回我的联系人列表中的所有成员以及那些在服务器上注册但不在我的朋友列表中的成员。
那么谁能帮帮我?
如何将设备联系人与我的应用程序同步?
【问题讨论】:
在我的应用程序中,我想显示一个选项,例如将联系人与应用程序同步。
它应该将所有联系人与我的应用同步(就像 Facebook 在我们转到 Find Friends 页面的 Contact 选项卡时所做的那样)。
所以当所有联系人同步后,我会将联系人与服务器匹配,服务器将返回我的联系人列表中的所有成员以及那些在服务器上注册但不在我的朋友列表中的成员。
那么谁能帮帮我?
如何将设备联系人与我的应用程序同步?
【问题讨论】:
要同步联系人,您需要从联系人列表中获取所有联系人。然后,您需要从您的服务器获取联系人并比较两个地方的联系人并选择常见的联系人。
这是从您的联系人列表中获取联系人的代码。
public void getPhoneNumbers() {
String PHONE_NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER;
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{PHONE_NUMBER}, null, null, null);
ArrayList<String> phones = new ArrayList<>();
while (cur.moveToNext()) {
String number = cur.getString(0);
number = number.replaceAll(" ", "");
if (!phones.contains(number)) phones.add(number);
}
cur.close();
}
由于我不知道您的服务器端代码,因此我无法帮助您从服务器获取联系人,但一个简单的查询应该可以完成这项工作,并且匹配联系人将需要 for 循环内的 for 循环。
【讨论】:
您应该创建同步适配器,并在其中同步并观察联系人的内容提供者。
详细说明可以参考下面的参考资料。 http://blogs.quovantis.com/syncing-contacts-with-an-android-application-2/
【讨论】:
你应该检查official docs,那里解释得很好,而且不是很困难。然后,如果您在实现它时仍然遇到一些问题,请回到这里并寻求有关您的代码的具体帮助。
希望对您有所帮助。谢谢。
【讨论】:
如果您想将您的联系人与您的应用程序同步,您只需要一个SyncAdapter。如果您不添加它,则不会显示联系人。添加同步适配器时,您还需要一个身份验证器。
【讨论】:
所以你的意思是你想将本地数据与服务器数据同步?
这取决于你的情况。就像关系一样。您可以使用电话号码在两个人之间建立联系。如果 Jack 已经注册,那么您的服务器就有 Jack 的电话号码和他的 id。当玛丽注册时,客户端上传玛丽的本地联系人。然后服务器检查数据。找到杰克的电话后,这意味着杰克是玛丽的朋友。因此,当 Jack 或 Mary 加载“朋友”时,它会显示数据。
【讨论】: