2017-01-11 45 views
0

ネットワークの要求を使用して取得する必要のある画像とともに、Android共有の意図を使用してメールを送信する必要があります。画像の添付ファイル付きのメールを送信する

これを実行した例のほとんどは、すでにデバイスに保存されている画像が含まれています。

イメージを最初にフェッチする必要がある場合は、ディスクに保存する必要はありません。

イメージローダーとしてGlideを使用しています。

+0

あなたが最初の画像をダウンロードする必要があり、次のコードを使用して、添付ファイルとして送信することができます。 – greenapps

答えて

1

あなたはグライドを使用してキャッシュディレクトリに画像を保存して

Glide 
.with(getApplicationContext()) 
.load("https://www.google.es/images/srpr/logo11w.png") // your URL 
.asBitmap() 
.into(new SimpleTarget<Bitmap>(100,100) { 
    @Override 
    public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { 
    File f = new File(context.getCacheDir(), filename);// use your filename fully 
    f.createNewFile(); 
    //Convert bitmap to byte array 
    Bitmap bitmap = resource; 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    bitmap.compress(CompressFormat.PNG, 0 /*ignored for PNG*/, bos); 
    byte[] bitmapdata = bos.toByteArray(); 
    //write the bytes in file 
    FileOutputStream fos = new FileOutputStream(f); 
    fos.write(bitmapdata); 
    fos.flush(); 
    fos.close(); 
    Uri U = Uri.fromFile(f); 
    Intent i = new Intent(Intent.ACTION_SEND); 
    i.setType("image/png"); 
    i.putExtra(Intent.EXTRA_STREAM, U); 
    startActivity(Intent.createChooser(i,"Email:")); 
    } 
}); 
+0

'f.createNewFile();'。あなたはその文を使用しないで紛らわしいものとして削除することができます。さらに、バイト配列出力ストリームをなくし、ファイル出力ストリームに直接圧縮する必要があります。 – greenapps

+0

残りのコードは、ダウンロードしたpngファイルをビットマップに変換し、そのビットマップをpngファイルに変換します。それは悪いプログラミングです。 – greenapps

関連する問題