2017-07-28 76 views
0

我目前有一個應用程序,我正在拍照,我試圖直接通過應用程序分享它們。我遇到的問題是,當選擇器出現並選擇一個時,我彈出一個錯誤信息,並顯示「無法附加文件」。然後它將我帶回到應用程序中,其他一切仍然有效。我假設這意味着我必須首先保存圖像,但我不確定是否正確執行此操作。我在網上找到了一些關於如何保存圖像的例子,但我不確定這是問題還是共享意圖是問題。如何分享我在應用中拍攝的圖像?

final Button shareButton = (Button) findViewById(R.id.shareButton); 
    shareButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      imageView.setDrawingCacheEnabled(true); 
      Bitmap b = imageView.getDrawingCache(); 
      MediaStore.Images.Media.insertImage(getContentResolver(), b, "title", "description"); 
      Intent shareIntent = new Intent(Intent.ACTION_SEND); 
      shareIntent.setType("image/jpeg"); 
      BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView.getDrawable(); 
      Bitmap image = bitmapDrawable.getBitmap(); 
      ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
      image.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
      File f = new File(Environment.getExternalStorageDirectory() + File.separator + "temp.jpg"); 
      try { 
       f.createNewFile(); 
       FileOutputStream fo = new FileOutputStream(f); 
       fo.write(bytes.toByteArray()); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageDirectory().getPath())); 
      startActivity(Intent.createChooser(shareIntent, "Share Image")); 


     } 
    }); 

作爲佔位符,我有「標題」和「描述」,直到我能得到它的工作。

+1

在你的問題中添加錯誤。 – Pipiks

+0

@Pipiks我沒有在android工作室或任何東西的錯誤,我的應用程序沒有崩潰。吐司剛剛彈出說「無法附加文件」,然後它返回到我的應用程序主屏幕,它仍然正常工作。我在帖子中加了一點。 –

+0

好吧,我認爲錯誤的行是'shareIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse(Environment.getExternalStorageDirectory()。getPath()));'你需要在第二個參數中設置圖像路徑 – Pipiks

回答

1

嘗試更換:

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageDirectory().getPath(‌​))); 

有了:

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f)); 

This question can help you.

+0

是的,我實際上已經在另一個選項卡中打開了這個例子,並試圖查看與此相比,哪裏可能會突破。此修復程序適用於我。謝謝! –

相關問題