Veja neste tutorial como sua aplicação Android desenvolvida com Delphi XE5 enviar e-mail utilizando o recurso do próprio sistema operacional.
Quando podemos utilizar
Imagine que você tenha um aplicativo de força de vendas e necessite enviar um e-mail para um determinado cliente que conste no cadastro de sua aplicação. Poder fazer isso apenas clicando sobre o cliente pode gerar um ganho de tempo significativo na atividade de seu usuário, é exatamente isso que faremos nessa postagem.
Sempre Intent
Mais uma vez vamos nos comunicar diretamente com o Sistema Operacional Android, para fazê-lo a melhor maneira é fazendo uso de Intents, volto a lembrar que caso não tenha lido ainda a postagem que já fiz sobre o assunto considero altamente recomendável a leitura: INTENTS COM DELPHI XE5 COMUNICANDO APPS ATRAVÉS DO ANDROID.
Concebendo a aplicação
Abra o Delphi XE5 e inicie um Novo Projeto Mobile em Branco, como já fizemos inúmeras vezes aqui no blog. Construiremos uma interface bem simples, inserindo no formulário principal da aplicação: 1 Button, 1 Edit e 1 Image. Como descrito abaixo alteraremos suas propriedades:
- Button1
- Align -> alBottom
- Text -> E-mail
- Edit1
- Align -> alTop
- KeyboardTye -> vktEmailAddress
- Image1
- Align -> alClient
- MultiResBitmap -> [selecione uma imagem de sua preferência]
- WrapMode -> iwStretch
Ao final do processo teremos uma tela bem parecida com a imagem abaixo.
Basicamente, ao clicar no Botão o usuário vai enviar um e-mail para o destinatário informado no Edit. Vamos aos códigos!
Implementando a funcionalidade
Primeiramente vamos inserir na cláusula uses da seção implementation os seguintes Namespaces:
implementation {$R *.fmx} uses FMX.Helpers.Android, Androidapi.Jni.GraphicsContentViewText, Androidapi.Jni.Net, Androidapi.Jni.JavaTypes, Androidapi.JNIBridge;
No evento OnClick do Button1 vamos inserir o código abaixo:
procedure TForm1.Button1Click(Sender: TObject); var Destinatario : string; Intent : JIntent; Destinatarios: TJavaObjectArray<JString>; begin if Edit1.Text <> EmptyStr then begin Destinatario := Edit1.Text; Destinatarios := TJavaObjectArray<JString>.Create(1); Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_SEND); Destinatarios.Items[0] := StringToJString(Destinatario); Intent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, Destinatarios); Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString('E-mail de Teste')); Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString('corpo do email')); Intent.setType(StringToJString('plain/text')); SharedActivity.startActivity(TJIntent.JavaClass.createChooser(Intent, StrToJCharSequence('Qual aplicativo deseja usar?'))); end; end;
Detalhando algumas linhas
A Intent ACTION_SEND não necessita de uma URI, entretanto passamos para ela alguns EXTRAS, que funcionam como se fosse parâmetros adicionais para o preenchimento de campos na Activity a ser chamada, vamos detalhá-los:
- TJIntent.JavaClass.EXTRA_EMAIL –> destinatário do e-mail.
- TJIntent.JavaClass.EXTRA_SUBJECT –> assunto do e-mail.
- TJIntent.JavaClass.EXTRA_TEXT –> corpo do e-mail.
Adicionamos passamos também o tipo de texto a ser utilizado na intent através da linha: Intent.setType(StringToJString(‘plain/text’));
Notem na declaração de variáveis temos a linha:
Destinatarios TJavaObjectArray<JString>;
Que declara um array de string’s do nativas do Java (JString), que instanciado para conter uma única posição na linha: Destinatarios := TJavaObjectArray<JString>.Create(1); , para depois neste array inserirmos o destinatário de nosso e-mail, vide linha contendo o código: Destinatarios.Items[0] := StringToJString(Destinatario);
Conferindo o Resultado
Execute o projeto e confira o resultado!
Temos nossa aplicação Delphi XE5 enviando e-mail pelo próprio Android.
Até a próxima!