存储 Android 联系人图标的技术
Posted
技术标签:
【中文标题】存储 Android 联系人图标的技术【英文标题】:Technique for Storing Android Contact Icons 【发布时间】:2011-09-10 08:04:06 【问题描述】:我想知道存储本地电话联系人图标的最佳方式是什么。我正在编写一个管理器,允许用户选择要在列表中显示的联系人,现在需要显示联系人图标。
将图标存储在选择工作的不同位置还是应该尝试存储图标位置并以这种方式链接到它的路径?任何经历过这一切的人都可以指出我正确的方向吗?我已经在使用 Sqlite 数据库来存储联系人了。
任何代码/链接都会很有帮助。
【问题讨论】:
【参考方案1】:由于您已经将联系人存储在 Sqlite 数据库中,我只需在该数据库中添加另一个字段来保存编码图像。
我解决类似问题的方法是:我使用Base64 将图像编码为字符串,然后将该字符串存储在任何我想要的位置...
我在 Base64 类中添加了一个函数,可以直接为我编码一个 Bitmap 对象并返回一个字符串,代码如下:
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类的实现函数。
这将是比存储图像路径更好的方法,因为用户可以轻松更改路径,然后您的应用程序将无法再找到图片。
希望对您有所帮助。
【讨论】:
【参考方案2】:首先,我建议您查看 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?
【讨论】:
以上是关于存储 Android 联系人图标的技术的主要内容,如果未能解决你的问题,请参考以下文章