存储Android联系人图标的技术

时间:2011-06-07 18:45:21

标签: android sqlite android-contacts

我想知道存储本地电话联系人图标的最佳方式是什么。我正在写一个管理员,允许用户选择要在列表中显示的联系人,现在需要联系人图标显示。

将图标存储在选定作品的不同位置,还是应该尝试存储图标位置并以此方式链接的路径?任何经历过这种情况的人都能指出我正确的方向吗?我正在使用Sqlite数据库来存储联系人。

任何代码/链接都会非常有用。

2 个答案:

答案 0 :(得分:1)

由于您已经将联系人存储在Sqlite数据库中,因此我只需在该数据库中添加另一个字段来保存编码图像。

我解决类似问题的方法是:我使用Base64将图像编码为字符串,然后将字符串存储在我想要的任何地方......

我在Base64类中添加了一个函数来直接为我编码一个Bitmap对象并返回一个String,这里是代码:

public static String encodeBitmap(Bitmap bmp) {
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
    byte[] buf = stream.toByteArray();
    return encodeBytes(buf);
}

其中encodeBytes(buffer)已经是Base64类的实现函数。

这样做比将图像存储路径更好,因为用户可以轻松更改路径,然后您的应用程序就不会再找到图片。

希望有所帮助。

答案 1 :(得分:1)

首先,我建议您查看Android源代码,看看他们是如何做到这一点的。

除此之外,如果图像很小,我强烈建议您创建一个合适的ContentProvider并将图像存储为使用Cursor.getBlob()附加到行的二进制blob。有关详细信息,请参阅http://developer.android.com/intl/de/guide/topics/providers/content-providers.html#querying

对于较大的图片,请查看How to store large blobs in an android content provider?