2014-12-19 66 views
0

我的應用程序中有大約10張圖像,並且它們都是可繪製的resours,而不是從服務器下載。通過保存在內部存儲器中共享來自drawable的圖像

我需要分享此圖像。

我有這樣的解決方案:將drawable轉換爲文件,保存並從文件夾共享文件。

Everething可以與外部存儲,當我有一張SD卡。但是當我使用Nexus 5時(內部存儲),由於格式不正常,它會保存一些文件,但不共享它。

請幫助我與內部存儲或與drawable共享。

private void shareit() 
    { 

     Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.son); 

     Intent share = new Intent(Intent.ACTION_SEND); 
     share.setType("image/jpeg"); 
     ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
     icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 

     File f;    

     String state = Environment.getExternalStorageState(); 
     if (Environment.MEDIA_MOUNTED.equals(state)) { 
      // We can read and write the media 
      f=new File(Environment.getExternalStorageDirectory() + File.separator + "son.jpg"); 
     } 
     else{ 
      f = new File(getActivity().getApplicationContext().getCacheDir(), "son.jpg"); 
      if(f.exists()){ 
       Log.i("imageExistsInternal", "file is complete"); 
      } 
     } 
     if(!f.exists()) 
      f.mkdir(); 
     share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f)); 
     startActivity(Intent.createChooser(share, "Share Image")); 
    } 
+0

在共享圖像的多個問題。所有在這裏固定。閱讀問題,回答和談話。 http://stackoverflow.com/questions/27101881/how-to-always-save-image-with-new-name-and-delete-previouse-one-android – hasan83

+0

試圖使用,但它只適用於外部存儲 – tadvas

回答

0

在上面的代碼中,您沒有將圖像寫入文件。如果圖像不存在,則會創建一個目錄,因此格式不正確。

if(!f.exists()) 
     f.mkdir(); 

你需要改變這樣的

if (!f.exists()) { 
     FileOutputStream outputStream = null; 
     try { 
      outputStream = new FileOutputStream(f); 
      outputStream.write(bytes.toByteArray()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (outputStream != null) { 
       try { 
        outputStream.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
+0

unforunatuly,它不幫助我。也許另一個想法? – tadvas

相關問題