2015-01-16 3 views
-1

мое приложение отправляет электронное письмо, когда я нажимаю кнопку. Мне нужно прикрепить файл .csv. Вот код:Intent.ACTION_SEND не отправляет вложение

Intent email = new Intent(Intent.ACTION_SEND); 



     File file = new File(Environment.getExternalStorageState()+"/storage/sdcard0/myfile.csv"); 
     Uri path = Uri.fromFile(file); 

     email.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
     email.putExtra(Intent.EXTRA_SUBJECT, "Some text"); 
     email.putExtra(Intent.EXTRA_TEXT, "Some text"); 


     email.putExtra(Intent.EXTRA_STREAM, path); 
     email.setType("application/octet-stream"); 
     startActivityForResult(Intent.createChooser(email, "Select client"),1222); 

Когда я запустить приложение, и я нажимаю кнопку Send, всплывающее окно выходит и я выбираю клиента электронной почты. Когда клиент открыт, я могу прочитать текст, тему, электронную почту, и я вижу внизу вложение (файл .csv). Но когда я отправляю электронную почту, у получателя нет приложения.

+0

Что вы ожидаете 'Environment.getExternalStorageState()' делать? – njzk2

+0

серфинг в Интернете Я обнаружил, что вы не можете напрямую прикреплять файл к письму по некоторым причинам безопасности – gabboSonc

+0

Возможный дубликат [Как отправить электронное письмо с прикрепленным файлом в Android] (http://stackoverflow.com/ вопросы/9974987/how-to-send-an-email-with-a-file-attachment-in-android) – AADProgramming

ответ

1

Environment.getExternalStorageState() статический метод возвращает состояние первичного «внешнего» хранения, например MEDIA_UNKNOWN, MEDIA_REMOVED, MEDIA_UNMOUNTED, а не путь хранения.

Удалить getExternalStorageState, который вы добавляете, прежде чем путь к файлу:

File file = new File("/storage/sdcard0/myfile.csv"); 

и если файл хранится в первичном хранения устройства используйте Environment.getExternalStorageDirectory, чтобы получить каталог хранения вместо статичной.

+0

это работает !!! благодаря! – gabboSonc

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