我从图像库的路径中获取一个文件,并尝试将其加载到图像视图,如下所示。文件路径为:/storage/sdcard0/DCIM/Camera/1436267579864.jpg。我也尝试传递 Uri 我也有 SD 卡的读取权限。
它最终在onError()
方法。然而,类似的方法对于 web url 来说效果很好。我该如何解决这个问题?
private void getImage(File file) {
if(file.exists()) {
Picasso.with(activity)
.load(file)
.error(R.drawable.noimage)
.into(imgPreview, new Callback() {
@Override
public void onSuccess() {
if (progressBar != null && imgPreview != null) {
imgPreview.setVisibility(View.VISIBLE);
imgPreview.setTag("loaded");
progressBar.setVisibility(View.GONE);
}
}
@Override
public void onError() {
if (progressBar != null && imgPreview != null) {
imgPreview.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.GONE);
}
}
});
}
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
虽然为时已晚,但我遇到了同样的问题,所以我用以下方式解决了。只需在路径开头使用并附加“file://”即可。看看这个:
Picasso.with(context) //
.load("file://" +myFilePath) //
.error(R.mipmap.error)
.placeholder(R.mipmap.ic_launcher)
.fit()
.tag(MyActivity.this) //
.into(imageView, new ImageLoadedCallback(progressBar) {
@Override
public void onSuccess() {
progressBar.setVisibility(View.GONE);
}
@Override
public void onError() {
Log.d("Picasso Error", "Error");
}
});
这解决了我的问题。只是回答,以便如果有人遇到同样的问题并来这里寻求解决方案,那么他可能会通过此解决他的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)