android - Android 的通用图像加载器可以处理来自 sqlite 数据库的图像吗?

标签 android database sqlite universal-image-loader

我想将我的图像存储在 sqlite 数据库中的 blob-s 中,并可能对其进行加密。 是否可以将 Android-Universal-Image-Loader 与来自 sqlite 数据库的图像一起使用?

最佳答案

UIL 不支持开箱即用的 SQLite 数据库中的图像。但是你可以自己添加这个支持,你只需要想出新的方案/协议(protocol)名称(例如 db://),实现自己的 ImageDownloader 并将其设置为配置。

例如:

让我们选择自己的方案 db,这样我们的 URI 将看起来像 "db://..."

然后实现ImageDownloader。我们应该用我们的方案捕获 URI,解析它,在数据库中找到所需的数据并为其创建 InputStream(它可以是 ByteArrayInputStream)。

public class SqliteImageDownloader extends BaseImageDownloader {

    private static final String SCHEME_DB = "db";
    private static final String DB_URI_PREFIX = SCHEME_DB + "://";

    public SqliteImageDownloader(Context context) {
        super(context);
    }

    @Override
    protected InputStream getStreamFromOtherSource(String imageUri, Object extra) throws IOException {
        if (imageUri.startsWith(DB_URI_PREFIX)) {
            String path = imageUri.substring(DB_URI_PREFIX.length());

            // Your logic to retreive needed data from DB
            byte[] imageData = ...;

            return new ByteArrayInputStream(imageData);
        } else {
            return super.getStreamFromOtherSource(imageUri, extra);
        }
    }
}

然后我们将这个ImageLoader设置为配置:

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        ...
        .imageDownloader(new SqliteImageDownloader(context))
        .build();

ImageLoader.getInstance().init(config);

然后我们可以执行以下操作来显示来自数据库的图像:

imageLoader.displayImage("db://mytable/13", imageView);

关于android - Android 的通用图像加载器可以处理来自 sqlite 数据库的图像吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16231489/

相关文章:

android - 如何删除未使用的 GcmTaskService 服务?

android - 如何将数据库从我的 android 拉到我的桌面上?

java - 如何初始化java数组大小来存储数据库ResultSet数据?

android - 管理 Android Activity 中的数据库连接

android - 我在android中的数据库文件在哪里?

线程中的android应用程序类

android - 如何在自定义对话框中添加微调器并用数组填充它

java.sql.SQLException : Column count doesn't match value count at row 1 for prepared statements

android - SQLite中支持android的数据类型是什么

java - 在 Eclipse Java EE 上安装 Android SDK