2012-05-08 6 views
3

Мое приложение использует метод умысла для отправки электронной почты пользователям, как удобный способ экспорта данных электронной таблицы Excel (созданных JExcell API).Приложить файл XLS (Excel) по электронной почте

Файл содержится на SD-карте в папке с именем записей.

Файл, который я пытаюсь отправить, - это вызов measurments.xls.

Я проверил в коде наличие файла перед отправкой. Композитор электронной почты показывает вложение, но когда я отправляю и получаю электронное письмо, вложения там нет.

Однако, если я подстановлю файл excel для png-изображения, вложение будет получено. Так что дает ???

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

public static void sendEmailWithAttachment(Context ctx, String to,String subject, String message, String fileAndLocation) 
    { 
     Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
     emailIntent.setType("text/plain"); 
     emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {to}); 

     emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); 
     emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message); 


      File file = new File(fileAndLocation); 
     // File file = getFileStreamPath(); 
      if (file.exists()) 
      { 
       Log.v("Farmgraze", "Email file_exists!"); 
      } 
      else 
      { 
       Log.v("Farmgraze", "Email file does not exist!"); 
      } 


     Log.v("FarmGraze", "SEND EMAIL FileUri=" + Uri.parse("file:/"+ fileAndLocation)); 
     emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:/"+ fileAndLocation)); 

     ctx.startActivity(Intent.createChooser(emailIntent, "Send mail...")); 
    }//end method 

Так что же мне нужно сделать, чтобы получить файл xls? Измените типы mime во второй строке кода метода? Если да, то что. Любые полезные советы будут очень признательны.

Спасибо за чтение.

A. 
+0

Вы уверены, что исходящий/входящий почтовый сервер не разделяет определенные вложения? Попробуйте отправить его в/из учетной записи gmail. Я полагаю, что изменение типа MIME могло бы помочь, но скорее это почтовый сервер. – Shellum

+0

Хмм, не знаю, если это имеет значение, но я обычно вижу файл 'файл: /' с двумя слэшами: // '. Попробуйте. – Gophermofur

+0

@Chuck Norris Я отправил файл через веб-приложение GMail, на мой рабочий адрес электронной почты, и файл прошел, чтобы мы могли это исключить. –

ответ

5

Ok люди просто добавят закрытие на этот вопрос Я нашел решение.

Проблема была в том, что путь к файлу String, отправленный в URI, должен иметь три косые черты.

Как и в:

file:///sdcard/somefolder/some_file.xls. 

Также для первенствовать документы нужно установить тип следующим образом:

emailIntent.setType("application/excel"); 

Таким образом, проблема была два двойственными один. Я знал о трех слэш-решениях через this thread, но, поскольку это не сработало, проблема заключается в том, где.

Также я узнал о правильных типах mime через this webpage, в котором перечислены все поддерживаемые типы mime и может быть очень полезен для других читателей.

Так что спасибо за чтение и интерес к моей маленькой проблеме, которая теперь решена.

0

Я думаю, что проблема может быть связана с вашим типом mime. Попробуйте следующее:

MimeTypeMap mime = MimeTypeMap.getSingleton();  
String mimeTypeForXLSFile = mime.getMimeTypeFromExtension(".xls"); 

emailIntent.setType(mimeTypeForXLSFile); 
+2

Благодарим за предложение об этом, но я получаю диалоговое окно «Отправить письмо», в котором говорится, что «Нет приложений может выполнять это действие». –

+0

На эмуляторе или на телефоне? Я получаю это сообщение, когда я пробую его на эмуляторе, но он отлично работает на телефоне. – Gophermofur

+0

На телефоне Galaxy S2 и Galaxy Ace 2.3.3 –