Это предполагает реакцию юзера - выбрать приложение и нажать на кнопку отправки.
Как быть, если мы реализуем приложение, предполагающее автоматическую отправку данных без участия пользователя?
Сразу хочу оговориться, что это не шпионская утилита, а приложение для метеорологов, отсылающее с заданным интервалом времени фото облачности, и потом эти фото используются для прогнозирования погоды.
Встаёт вопрос, как отсылать? Можно использовать внешний сервер, принимающий данные, можно email, можно mms.
Пытаясь выяснить, что лучше, задал вопрос во Флудильне: Что быстрее - email или mms? Пока вразумительного ответа нет.
На Хабре нашёл интересную статью: Отправка E-Mail средствами Android. В Части 2 там описан способ отправки email, не требующий от пользователя настроенного клиента.
Исходный код приложения там приложен, потому можно быстро проверить его работоспособность.
Для работы используется дополнительные библиотеки javamail-android.
У меня на эмуляторе не заработало вот с таким сообщением:Качаем их, и встраиваем в проект: Контекстное меню проекта > «Build Path» > «Add External Archives...» > «Наши файлы additional, mail, activation»
и с такими логами:
Код: Выделить всё
04-04 12:34:50.364: W/dalvikvm(214): Unable to resolve superclass of Lcom/habra/example/com/MailSenderClass; (86)
04-04 12:34:50.374: W/dalvikvm(214): Link of class 'Lcom/habra/example/com/MailSenderClass;' failed
04-04 12:34:50.374: E/dalvikvm(214): Could not find class 'com.habra.example.com.MailSenderClass', referenced from method com.habra.example.com.ExtendedMail$sender_mail_async.doInBackground
04-04 12:34:50.384: W/dalvikvm(214): VFY: unable to resolve new-instance 46 (Lcom/habra/example/com/MailSenderClass;) in Lcom/habra/example/com/ExtendedMail$sender_mail_async;
04-04 12:34:50.394: D/dalvikvm(214): VFY: replacing opcode 0x22 at 0x003a
04-04 12:34:50.394: D/dalvikvm(214): Making a copy of Lcom/habra/example/com/ExtendedMail$sender_mail_async;.doInBackground code (248 bytes)
04-04 12:34:50.554: W/dalvikvm(214): threadid=17: thread exiting with uncaught exception (group=0x4001b188)
04-04 12:34:50.554: E/AndroidRuntime(214): Uncaught handler: thread AsyncTask #1 exiting due to uncaught exception
04-04 12:34:50.624: E/AndroidRuntime(214): java.lang.RuntimeException: An error occured while executing doInBackground()
04-04 12:34:50.624: E/AndroidRuntime(214): at android.os.AsyncTask$3.done(AsyncTask.java:200)
04-04 12:34:50.624: E/AndroidRuntime(214): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
04-04 12:34:50.624: E/AndroidRuntime(214): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
04-04 12:34:50.624: E/AndroidRuntime(214): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
04-04 12:34:50.624: E/AndroidRuntime(214): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-04 12:34:50.624: E/AndroidRuntime(214): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
04-04 12:34:50.624: E/AndroidRuntime(214): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
04-04 12:34:50.624: E/AndroidRuntime(214): at java.lang.Thread.run(Thread.java:1096)
04-04 12:34:50.624: E/AndroidRuntime(214): Caused by: java.lang.NoClassDefFoundError: com.habra.example.com.MailSenderClass
04-04 12:34:50.624: E/AndroidRuntime(214): at com.habra.example.com.ExtendedMail$sender_mail_async.doInBackground(ExtendedMail.java:94)
04-04 12:34:50.624: E/AndroidRuntime(214): at com.habra.example.com.ExtendedMail$sender_mail_async.doInBackground(ExtendedMail.java:1)
04-04 12:34:50.624: E/AndroidRuntime(214): at android.os.AsyncTask$2.call(AsyncTask.java:185)
04-04 12:34:50.624: E/AndroidRuntime(214): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
04-04 12:34:50.624: E/AndroidRuntime(214): ... 4 more
04-04 12:34:51.044: I/dalvikvm(214): threadid=7: reacting to signal 3
04-04 12:34:51.114: I/dalvikvm(214): Wrote stack trace to '/data/anr/traces.txt'
04-04 12:39:51.174: I/Process(214): Sending signal. PID: 214 SIG: 9
Код: Выделить всё
Unable to resolve superclass of Lcom/habra/example/com/MailSenderClass; (86)
Прошу совета, как заставить это всё заработать.
PS. Не забудьте в
Код: Выделить всё
MailSenderClass sender = new MailSenderClass("ваш_логин@gmail.com", "password");