2013-06-22 81 views
4

我有一個圖像庫,圖像來自服務器。我想在Gmail中分享/附加圖片。我正在使用「添加簡單的共享操作」。 http://developer.android.com/training/sharing/shareaction.html#set-share-intent如何共享/附加圖像從Android服務器在Gmail中

最初我試圖從我的SDCard共享圖像,我可以通過使用下面的代碼來實現。

  Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); 
    sharingIntent.setType("image/jpeg"); 
    String shareBody = "Here is the share content body"; 
    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); 
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody); 
    sharingIntent.putExtra(android.content.Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/DCIM/Camera/20130503_133024.jpg")); 
    mShareActionProvider.setShareIntent(sharingIntent); 

,當我試圖通過使用下面的代碼,然後在發送郵件通過我的服務器圖像的URL,我得到消息,說「不能附加圖片」。

Uri.parse( 「http://lh6.googleusercontent.com/-jZgveEqb6pg/T3R4kXScycI/AAAAAAAAAE0/xQ7CvpfXDzc/s1024/sample_image_01.jpg」)

請幫我從服務器共享圖像。

回答

1

看來STREAM和EXTRA_STREAM意圖類型並沒有真正定義好,最終取決於目標應用程序如何解釋它們。 如果你想確保圖像是電子郵件中的二進制文件,更安全的方法是從服務器上下載圖像並將其附加到自己的意圖中。 有關於這裏的話題更多的光線:"android.intent.extra.STREAM"

+0

何塞,謝謝你的回答。 – Aditya

+0

我的榮幸阿迪亞 –

0

花了大量的時間後,終於讓我找到解決辦法:

 URL url = null; 
     try { 
      url = new URL(imageurl); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 
     HttpURLConnection connection = null; 
     InputStream input = null; 
     try { 
      connection = (HttpURLConnection) url.openConnection(); 
      connection.setDoInput(true); 
      connection.connect(); 
      input = connection.getInputStream(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     Bitmap immutableBpm = BitmapFactory.decodeStream(input); 
     Bitmap mutableBitmap = immutableBpm.copy(Bitmap.Config.ARGB_8888, true); 
     View view = new View(this); 
     view.draw(new Canvas(mutableBitmap)); 
     String path = Images.Media.insertImage(getContentResolver(), mutableBitmap, "rbt", null); 
     Uri uri = Uri.parse(path); 
     Intent intent = new Intent(); 
     intent.setType("image/*"); 
     intent.putExtra(Intent.EXTRA_STREAM, uri); 
     intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
     intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
     intent.putExtra(Intent.EXTRA_TEXT, body); 
     intent.setPackage("com.google.android.gm"); 
     startActivity(intent); 

而且在的manifest.xml下面添加權限

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

它對我來說很完美