2016-02-13 50 views
0

我正在嘗試分享image,但我不知道爲什麼我會失敗,請問您能幫助我嗎?分享圖片失敗

String imageUrl = web.get(position).getImage(); 
    if (!imageUrl.startsWith("http://") && !imageUrl.startsWith("https://")) 
     imageUrl = "http://" + imageUrl; 

    Button button = (Button)rowView.findViewById(R.id.condividi); 
    final String finalImageUrl = imageUrl; 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(Intent.ACTION_SEND); 
      intent.setType("image/*"); 
      intent.putExtra(Intent.EXTRA_TEXT, web.get(position).getTitle()); 
      File file = writebitmaptofilefirst("the image", finalImageUrl); 
      Uri path = Uri.fromFile(file); 
      intent.putExtra(Intent.EXTRA_STREAM, path); 
      Intent send = Intent.createChooser(intent, null); 
      context.startActivity(send); 
     } 
    }); 

public static File writebitmaptofilefirst(String filename, String source) { 
    String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
    File mFolder = new File(extStorageDirectory + "/temp_images"); 
    if (!mFolder.exists()) { 
     mFolder.mkdir(); 
    } 
    OutputStream outStream = null; 


    File file = new File(mFolder.getAbsolutePath(), filename + ".jpg"); 
    if (file.exists()) { 
     file.delete(); 
     file = new File(extStorageDirectory, filename + ".jpg"); 
     Log.e("file exist", "" + file + ",Bitmap= " + filename); 
    } 
    try { 
     URL url = new URL(source); 
     Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 

     outStream = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream); 
     outStream.flush(); 
     outStream.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    Log.e("file", "" + file); 
    return file; 

} 

編輯

String imageUrl = web.get(position).getImage(); 
    if (!imageUrl.startsWith("http://") && !imageUrl.startsWith("https://")) 
     imageUrl = "http://" + imageUrl; 

    Button button = (Button)rowView.findViewById(R.id.condividi); 
    final String finalImageUrl = imageUrl; 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(Intent.ACTION_SEND); 
      intent.setType("image/*"); 
      intent.putExtra(Intent.EXTRA_TEXT, web.get(position).getTitle()); 
      String file = writebitmaptofilefirst("ndp_image", finalImageUrl); 
      //Uri path = Uri.fromFile(file); 
      intent.putExtra(Intent.EXTRA_STREAM, file); 
      Intent send = Intent.createChooser(intent, null); 
      context.startActivity(send); 
     } 
    }); 

    return rowView; 

} 

public static String writebitmaptofilefirst(String filename, String source) { 
    String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
    File mFolder = new File(extStorageDirectory + "/temp_images/"); 
    if (!mFolder.exists()) { 
     mFolder.mkdir(); 
    } 
    OutputStream outStream = null; 


    File file = new File(mFolder.getAbsolutePath(), filename + ".jpg"); 
    if (file.exists()) { 
     file.delete(); 
     file = new File(extStorageDirectory, filename + ".jpg"); 
     Log.e("file exist", "" + file + ",Bitmap= " + filename); 
    } 
    try { 
     URL url = new URL(source); 
     Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 

     outStream = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream); 
     outStream.flush(); 
     outStream.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    Log.e("file", "" + file); 
    return file.getAbsolutePath(); 

} 
+0

你會得到什麼問題?碰撞?如果是這樣,請發佈LogCat – user2340612

+0

@ user2340612當我要使用社交應用程序發送文件時,我沒有發生崩潰它只是出現如下消息:**共享失敗,請再試一次**(在Whatsapp的例子)或**不可能上傳圖片**(在Instagram的情況下) – Pier

+0

你確定你需要'EXTRA_TEXT'和'EXTRA_STREAM'臨時演員嗎?我想你只需要第二個 – user2340612

回答

0

添加的權限從文件名(圖像)您的清單

刪除空間。有了空間,你需要解碼uri。你應該完全路徑返回file.getAbsolutePath()。你只是傳遞文件名。
在文件存在的情況下,您不存儲在相同的路徑。你沒有收入字典。 extranlstoragepath +/temp_images/+ image.jpg嘗試記錄您的文件路徑。和

File file = new File(mFolder.getAbsolutePath(),filename +「.jpg」);

您錯過了兩個參數中的一個/兩個參數。

Wonderful blogpost about storing image

+0

我試着把** return file.getAbsolutePath()**但沒有任何東西 – Pier

+0

你得到了什麼?圖像保存到存儲? – SreeAndroidDev

+0

檢查編輯以查看我現在得到的內容 – Pier