我想下载已上传到Firebase的图像。我获得了URL,并能够将它们直接加载到所需的ImageView。但我想将它们下载到内部存储中的所需路径。
我使用过Picasso,但它对我不起作用,因为我在使用**(new Target())**时得到了下面所附的错误。这是我使用Picasso和Target时得到的错误
毕加索的密码如下
Picasso.get()
.load(downloadUrl)
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
try {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/yourDirectory");
if (!myDir.exists()) {
myDir.mkdirs();
}
String name = new Date().toString() + ".jpg";
myDir = new File(myDir, name);
FileOutputStream out = new FileOutputStream(myDir);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch(Exception e){
// some action
}
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
//Some Action;
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
//Some Action;
}
}
);
我已经在文档中搜索,但没有工作。请让我尽快知道。如果有人有正确的答案。提前感谢
2条答案
按热度按时间jgzswidk1#
第一个:实现
Taget
类方法清 debugging 误second:您的代码抛出此
exception java.io.FileNotFoundException
,因为Date
对象的默认格式与Mon Jan 21 12:10:23 GMT+02:00 2019
类似,并且您无法创建名称包含**:**冒号的文件**第三:**检查是否在
androidManiefest.xml
中添加了android.permission.WRITE_EXTERNAL_STORAGE
权限,并且需要在marshmallow中使用运行时权限mnemlml82#
**注意:**要删 debugging 误,必须实现Target类的方法。
对于下载映像,您可以从链接中找到解决方案
https://www.codexpedia.com/android/android-download-and-save-image-through-picasso/
方法