2015-07-07 24 views
7

Tôi lấy tệp từ đường dẫn từ thư viện hình ảnh và cố tải hình ảnh đó ở chế độ xem hình ảnh như sau. Đường dẫn tệp là: /storage/sdcard0/DCIM/Camera/1436267579864.jpg. Tôi cũng đã cố gắng vượt qua Uri tôi cũng đã đọc đặc quyền để thẻ SD.Thư viện Picasso không tải hình ảnh từ thẻ SD trên Android

Kết thúc bằng phương thức onError(). Tuy nhiên phương pháp tương tự hoạt động tốt cho các url web. Làm cách nào tôi có thể giải quyết vấn đề này?

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"/> 
+0

Bạn đang chạy phiên bản Android nào? Bạn có các phần tử '' nào trong tệp kê khai của mình? – CommonsWare

+0

Cảm ơn. Tôi đã thêm Manifest của mình ở trên. Điện thoại có phiên bản mới nhất (4.x) – pats

+0

bạn đã thử "tệp: ///storage/sdcard0/DCIM/Camera/1436267579864.jpg" – ligi

Trả lời

3

Mặc dù nó là quá muộn, nhưng tôi bị mắc kẹt vào cùng một vấn đề, vì vậy tôi giải quyết theo cách sau. Chỉ cần sử dụng và thêm "file: //" vào đầu đường dẫn. hãy xem điều này:

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"); 

         } 
        }); 

Điều này giải quyết được sự cố của tôi. Chỉ cần trả lời để nếu một số người rơi vào cùng một vấn đề và đến đây để giải quyết thì anh ta có thể giải quyết vấn đề của mình thông qua việc này.

Các vấn đề liên quan