【问题标题】:Picasso library does not load images from SD card on AndroidPicasso 库不会在 Android 上从 SD 卡加载图像
【发布时间】:2017-05-24 22:40:00
【问题描述】:

我从图片库的路径中获取一个文件,并尝试将其加载为图像视图,如下所示。文件路径为:/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"/>

【问题讨论】:

  • 您在哪个版本的 Android 上运行?您的清单中有哪些 &lt;uses-permission&gt; 元素?
  • 谢谢。我在上面添加了我的清单。手机有最新版本(4.x)
  • 你试过“file:///storage/sdcard0/DCIM/Camera/1436267579864.jpg”
  • 不,那也没用

标签: android picasso


【解决方案1】:

虽然为时已晚,但我遇到了同样的问题,所以我通过以下方式解决了。只需在路径的开头使用并附加“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");

                        }
                    });

这解决了我的问题。只是回答,以便如果有人遇到同样的问题并来这里寻求解决方案,那么他可能会通过此解决他的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多