我从图像库中的路径获取文件,并尝试将其加载到图像视图,如下所示.文件路径是:/storage/sdcard0/DCIM/Camera/1436267579864.jpg.我也试过传递Uri我也有读SD卡的权限.
它最终出现在onError()方法中.但是类似的方法适用于网址.我该如何解决这个问题?
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"); } });