2015-11-06 57 views
0

圖像被下載後,我把它保存在內部存儲在我怎樣才能在Android圖庫打開保存在內部存儲的圖像(在安卓/數據/%包%/高速緩存文件夾)

的Android /數據/%包名%/緩存目錄。下面是一段代碼。

private class SaveImageToStorage extends AsyncTask<Void,Void,Void> 
{ 
    String picName; 
    Bitmap bitmap; 
    public SaveImageToStorage(String name, Bitmap bitmap) 
    { 
     this.picName = name; 
     this.bitmap = bitmap; 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     if(bitmap != null && !picName.isEmpty()) { 
      File file = new File(feedImagesCacheDir.getPath(), extractImageNameFromUrl(picName)); 
      try { 
       FileOutputStream fos = new FileOutputStream(file); 
       bitmap.compress(Bitmap.CompressFormat.WEBP, 80, fos); 
       fos.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    } 
} 

而且畢竟這只是想打開Android圖庫中的圖像。

我嘗試下面的代碼,它不工作。它顯示我吐司「找不到圖像」。

所以我試過刪除「file://」,然後它打開沒有任何東西但像破碎的圖像圖標的畫廊。

private void openImageInGallery(){ 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_VIEW); 
    intent.setDataAndType(Uri.parse("file://"+getFeedImagesCacheDir().getPath() + "/" + imgName+".webp"), "image/*"); 
    startActivity(intent); 
} 

我想也許我把它保存在緩存文件夾中,所以它變成私有的,只能訪問我的應用程序。

我該如何解決這個問題?

Thanks.Sorry for my ENG ENG。

回答

0

您可以將圖像下載到DCIM(sdCard中的圖庫文件夾)。 然後使用下面打開空間:

public static final int RESULT_GALLERY = 0; 
Intent galleryIntent = new Intent(
        Intent.ACTION_PICK, 
       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(galleryIntent , RESULT_GALLERY); 

如果你想獲得導致URI或做別​​的用這樣的:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    switch (requestCode) { 
    case QuestionEntryView.RESULT_GALLERY : 
     if (null != data) { 
      imageUri = data.getData(); 
      //Do whatever that you desire here. or leave this blank 

     } 
     break; 
    default: 
     break; 
    } 
} 

希望這有助於!

+0

好的,謝謝... –

1

緩存圖像不是直接查看,因爲像加密格式一樣保存,因此首先將該圖像下載並保存到SD卡中。使用下面的代碼。

String root = Environment.getExternalStorageDirectory().toString(); 
String wallpaperFilePath=Android/data/%packagename%/cache/imagename; 
File cacheDir = GlobalClass.instance().getCacheFolder(this); 
File cacheFile = new File(cacheDir, wallpaperFilePath); 
InputStream fileInputStream = new FileInputStream(cacheFile); 
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 
bitmapOptions.inSampleSize = scale; 
bitmapOptions.inJustDecodeBounds = false; 
Bitmap wallpaperBitmap = BitmapFactory.decodeStream(fileInputStream, null, bitmapOptions); 


File myDir = new File(root + "/saved_images");  
myDir.mkdirs(); 
Random generator = new Random(); 
int n = 10000; 
n = generator.nextInt(n); 
String fname = "Image-"+ n +".jpg"; 
File file = new File (myDir, fname); 
if (file.exists()) file.delete(); 
try { 
     FileOutputStream out = new FileOutputStream(file); 
     wallpaperBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
     out.flush(); 
     out.close(); 

} catch (Exception e) { 
     e.printStackTrace(); 
} 

和清單

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

添加此通過使用這條線,你可以看到在畫廊視圖保存的圖像。

sendBroadcast(new Intent(
Intent.ACTION_MEDIA_MOUNTED, 
     Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 
+0

感謝您澄清兄弟。 –

相關問題