【发布时间】:2014-01-19 23:24:59
【问题描述】:
使用 Android 平台非常有趣,尤其是在解决问题时。事实上,互联网上可能有关于 Android 开发的所有信息。
好的,我已经搜索了大约一个星期,但没有找到任何离工作很近的东西。让我们深入了解它。
我们正在构建一个 Android 应用程序,该应用程序需要对设备上的现有联系人具有读/写权限。使用这种方法阅读联系人的照片变得非常容易:
// Returns a stream reading a contact thumbnail
public InputStream getContactThumbnail(int id) {
// Stream reading contact image
InputStream stream = ContactsContract.Contacts.openContactPhotoInputStream(
context.getContentResolver(),
ContentUris.withAppendedId(
ContactsContract.Contacts.CONTENT_URI, id
)
);
// If image is null, try to read Facebook image
if (stream == null) {
stream = new ByteArrayInputStream(getFacebookPhoto(id));
}
return stream;
}
现在,前面的方法接收一个 id 作为参数并返回一个 Stream,从而可以读取联系人的缩略图。 必须是流,因为手机就像一个网络服务器,有多个线程在运行。如果在同一时间间隔内多次请求缩略图,则肯定会抛出 OutOfMemoryException。
我需要正确实现 getFacebookPhoto(int) 方法,以便它返回读取联系人的 Facebook 个人资料图片的任何流,该联系人的联系人与其各自的 Facebook 个人资料相关联。我已经尝试过很多次,但都失败了。
假设 #1
如果联系人与 Facebook 个人资料相关联,则必须将 Facebook ID 保存在某处。如果可以访问此信息,则可以轻松使用图形获取 Facebook 个人资料图片。问题是这样做需要互联网连接。
假设 #2
Facebook 缩略图保存在 SD 卡的某个位置。也许联系人和那些可以通过 SQLite 请求找到的文件之间存在链接?
假设 #3
叹息,我看起来很绝望。好吧,如果我理解正确的话,电话联系人和 Facebook 联系人在数据库中并不是一回事。如果您从以下 URI 查询所有联系人: *ContactsContract.Contacts.CONTENT_URI* 您只会获得您创建的联系人,而不会获得有关 Facebook 链接的信息。有没有办法找到所有链接的联系人并获取他们各自的照片?
结论
是的,差不多就是这样。综上所述,我需要阅读所有联系人信息。对于每个联系人,我必须找到它的照片。如果用户没有为链接到 Facebook 个人资料的联系人设置图片,则也必须读取链接的个人资料图片。
到目前为止,StackOverflow 社区提供了很大帮助,无数次挽救了我的生命和工作。有可能,我在其他应用程序中看到过。
感谢您抽出宝贵的时间,真的很感激。
编辑
我们不要放弃!我会尽快开始100pts 赏金。
【问题讨论】:
标签: java android facebook android-contacts