【问题标题】:How can I copy a remote image over http to gallery folder in android?如何通过http将远程图像复制到android中的画廊文件夹?
【发布时间】:2014-11-23 11:07:13
【问题描述】:

我想复制一个远程图像,例如“http://example.com/example.jpg”到安卓用户手机内置的图库...我该怎么做?

【问题讨论】:

  • 图库文件夹不存在。图库只是一个可以向您显示设备上所有图片的应用程序。因此,您可以将该图片放在您想要的任何文件夹中。

标签: android android-image android-gallery


【解决方案1】:

为此,您应该下载图像并将其保存在内存中。

您可以自行下载图片:

public static Bitmap getBitmap(String url) {
    try {
        InputStream is = (InputStream) new URL(url).getContent();
        Bitmap d = BitmapFactory.decodeStream(is);
        is.close();
        return d;
    } catch (Exception e) {
        return null;
    }
}

Code from here 但是大图像会出现内存问题。我强烈建议您使用像 Android Universal Image LoaderPicasso from square 这样的构建库

【讨论】:

  • 首先应该将它下载到外部存储器,因为这是 Gallery 应用程序可以访问的地方。其次,如果是.jpg,其中jpg数据可以直接保存到文件中,那么制作Bitmap是一个非常糟糕的主意。
【解决方案2】:

在这里您可以找到example of how to use the Android DownloadManager to download your file

可以使用Environment 类中定义的内容来确定目标路径。常量 DIRECTORY_DCIM 指向父目录,所有活动都可以在该目录下创建一个自定义文件夹来存储他们的图像。您可以将自己的子文件夹作为目标文件夹

当您的图片下载完成后,您会注意到它不会在默认图库应用程序中列出,这是因为 Android 会为所有媒体文件建立一个索引,并且仍然不知道您下载的新图片。每次启动 Android 设备时都会更新此索引,但是由于每次添加文件时都重新启动设备有点不方便,因此您还可以通过代码通知索引服务创建了一个新文件并需要使用此文件进行索引代码:

Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intent.setData(Uri.fromFile(file));
sendBroadcast(intent);

此扫描也应在文件被删除后进行。

【讨论】:

    猜你喜欢
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 2012-11-05
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多