2013-08-05 4 views
0

Я создаю ACTION_SEND намерение в андроиде и приложив файл изображения с помощью следующего кода:Присоединить изображение к 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 возвращает истину, однако файл все еще там. Одна замечательная вещь, которую я заметил, это то, что сохраненное изображение имеет размер файла 0 и кажется пустым как до, так и после того, как я пытаюсь удалить.

Как правильно удалить это изображение после отправки его по электронной почте? Или есть альтернативный способ прикрепления изображения без его сохранения?

Кроме того, здесь не главный вопрос, но если вы можете указать, как изменить имя изображения/вложения с 1375729812685.jpg (или, что бы то ни было число может быть) на что-то еще, я ценю это.

Как последнее примечание, я тестировал HTC Evo, если это имеет значение.

+0

Он не будет работать, потому что пользователи не могут выбрать Gmail, но они выбрали бы некоторые другие приложения, как Dropbox или Picasa, или любое приложение, которое поддерживает 'ACTION_SEND' – vorrtex

+0

@vorrtex Да, я знаю, что ACTION_SEND обеспечивает более чем просто Gmail и электронная почта. В настоящее время это не мое беспокойство. Меня больше беспокоит, что изображение сохраняется на устройстве. Я предпочитаю, чтобы это не было спасено вообще, но из того, что я читал, это кажется невозможным. Поэтому я ищу способ удаления изображения. –

ответ

2

Я нашел решение для всех, кто заинтересован.

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{}); 
intent.putExtra(android.content.Intent.EXTRA_CC, new String[ {"[email protected]"}); 
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")); 
+1

где/почему происходит удаление? –

Смежные вопросы