2013-04-24 6 views
1

Я пытаюсь прикрепить текстовый файл к электронному письму, и у меня появляется странная ошибка, и я надеюсь, что кто-то может мне помочь. Он отлично работает, когда пользователь выбирает приложение gmail из списка выбора, но если они выбирают встроенное почтовое приложение, они видят тост, в котором говорится: «Не удалось присоединить файл».не удалось подключить файл к намерению ACTION_SEND

код выглядит следующим образом:

public static void sendMail(Context context, String emailBody, String emailSubject, String emailAddress, String attachmentFilename){ 
    Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
    emailIntent.setType("plain/text"); 

    emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { emailAddress}); 
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, emailSubject); 
    emailIntent.putExtra(Intent.EXTRA_TEXT, emailBody); 

    if(attachmentFilename != null) { 
     //Add the attachment by specifying a reference to our custom ContentProvider and the specific file of interest 
     emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://" + Settings.VYPR_LOG_PROVIDER_AUTHORITY + "/" + attachmentFilename)); 
    } 
    context.startActivity(emailIntent); 
} 

Кто-нибудь есть какие-либо мысли о том, что может быть здесь происходит? Большинство из того, что я видел здесь, связано с тем, что приложение находится на SD-карте. Я сам на самом деле не писал этот код, но похоже, что это не должно быть проблемой, поскольку он делает, если пользователь выбирает приложение gmail, а не встроенное.

Заранее благодарен!

ответ

1

Я испытал такую ​​же проблему давным-давно. Пришлось использовать приложение Gmail для отправки вложений. Я не мог понять, почему встроенное приложение электронной почты не работает.

Если вы пытаетесь получить вложение на определенный адрес электронной почты, вы также можете рассмотреть возможность развертывания веб-службы для загрузки вложения.

Надеюсь, это поможет.

+0

Просто похоже, что подход ContentProvider несовместим с большим количеством обработчиков ACTION_SEND. Если вы хотите использовать его, лучше всего, вероятно, сделать приложение Gmail обязательным. В противном случае вам нужно будет сохранить файл во внешнем хранилище – akhalsa

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