Как поставить этот код отправки электронной почты Android в службу? - PullRequest
0 голосов
/ 20 августа 2011

кто-нибудь знает, как поставить / переместить этот код отправки электронной почты в службу ??вот код:

Intent i = new Intent(Intent.ACTION_SEND);
            i.setType("text/plain");
            i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"myemail@hotmail.com"});
            i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
            i.putExtra(Intent.EXTRA_TEXT   , "body of email");

вот мой сервисный код (не работает и дайте мне "принудительное закрытие"):

@Override
    public void onStart(Intent intent, int startid) {
        //Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
        sendEmail();
    }

    public void sendEmail()
    {
        Intent i = new Intent(Intent.ACTION_SEND);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        i.setType("text/plain");
        i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"myemail@hotmail.com"});
        i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
        i.putExtra(Intent.EXTRA_TEXT   , "body of email");

        try {
            getApplication().startActivity(Intent.createChooser(i, "Send mail..."));
        } catch (android.content.ActivityNotFoundException ex) {
            Toast.makeText(EmailService.this,ex.getMessage(), Toast.LENGTH_SHORT).show();
            Toast.makeText(EmailService.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
        }

    }

пожалуйста, помогите для решения моей проблемы .. спасибо..

1 Ответ

1 голос
/ 20 августа 2011

потому что я хочу отправлять электронную почту без уведомления пользователя через фон

Это невозможно через ACTION_SEND.Вам нужно будет интегрировать свою собственную библиотеку SMTP (есть порт Android JavaMail, доступный где-то), если вы хотите отправлять электронную почту без участия пользователя.

Не работает и дает мне некоторое «принудительное закрытие»

Используйте adb logcat, DDMS или перспективу DDMS в Eclipse, чтобы проверить LogCat и посмотреть трассировку стека, связанную с вашим «Force Close».

Также не используйте getApplication() как вам это не нужно.

...