0

Android で ACTION_SEND インテントを作成し、次のコードで画像ファイルを添付しています。

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, "");
intent.putExtra(Intent.EXTRA_SUBJECT, "Receipt From: XXX");
intent.putExtra(Intent.EXTRA_TEXT, message);

byte[] b = Base64.decode(signature, Base64.DEFAULT); //Where signature is a base64 encoded string
final Bitmap mBitmap = BitmapFactory.decodeByteArray(b, 0, b.length);

String path = Images.Media.insertImage(getContentResolver(), mBitmap, "signature", null);
Uri sigURI = Uri.parse(path);
intent.putExtra(Intent.EXTRA_STREAM, sigURI);
startActivity(Intent.createChooser(intent, "Send Email"));

これは機能し、画像がメールに添付されます。ただし、後で画像を削除するのに問題があります。画像は、DCIM\Camera フォルダーに多数のファイル名で保存されます。

私はもう試した

File tempFile = File(getRealPathFromURI(sigURI)); //a subroutine which gives me the full path
tempFile.delete();

tempFile.delete は true を返しますが、ファイルはまだそこにあります。私が気づいた奇妙なことの 1 つは、保存された画像のファイル サイズが 0 であり、削除しようとする前後の両方で空に見えることです。

メールで送信した後、この画像を適切に削除するにはどうすればよいですか? または、画像を保存せずに添付する別の方法はありますか?

また、ここでの主な質問ではありませんが、画像/添付ファイルの名前を 1375729812685.jpg (または番号が何であれ) から別のものに変更する方法を含めていただければ幸いです。

最後のメモとして、私は HTC Evo で何か違いがあるかどうかをテストしてきました。

4

1 に答える 1

2

興味のある人のための解決策を見つけました。

Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{});
intent.putExtra(android.content.Intent.EXTRA_CC, new String[ {"test@test.net"});
intent.putExtra(Intent.EXTRA_SUBJECT, "Receipt From: " + receipt[1]);


String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date());
String imageFileName = "IMG_" + timeStamp + "_";
File albumF = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Receipt");

if (albumF != null) {
    if (! albumF.mkdirs()) {
        if (! albumF.exists()){
            Log.d("CameraSample", "failed to create directory");
            return;
         }
    }
}

File imageF = File.createTempFile(imageFileName, ".jpg", albumF);
byte[] b = Base64.decode(sig, Base64.DEFAULT);
if (b.length > 0) {
    Bitmap mBitmap = BitmapFactory.decodeByteArray(b, 0, b.length);
    FileOutputStream ostream = new FileOutputStream(imageF);
    mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, ostream);
    ostream.flush();
    ostream.close();

    Uri fileUri = Uri.fromFile(imageF);

    intent.putExtra(Intent.EXTRA_STREAM, fileUri);
}


intent.putExtra(Intent.EXTRA_TEXT, message);
intent.setType("message/rfc822");

startActivity(Intent.createChooser(intent, "Send Email Using"));
于 2013-08-23T18:39:49.083 に答える