Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
No Delphi XE7 inicie um novo projeto Multi-Device Project (Como já fizemos este procedimento por diversas vezes aqui no blog, vou
considerar que podemos pular essa parte). Vamos selecionar a Target Platform Android através do Project Manager, aproveite e
selecione também o Dispositivo Alvo (opção Target) para onde será feito o deploy após a compilação. Veja na imagem abaixo:
Vamos construir uma interface bem simples, nela teremos apenas os componentes e propriedades como listados abaixo:
Edit1
o Align –> Top
o Text –> ”
o ReturnKeyType –> Done
Image1
o MultiResBitmap –> [Uma imagem de sua preferência]
o WrapMode –> Stretch
Button1
o Text –> ‘Enviar Whatsapp’
Entendendo e codificando
Basicamente teremos no Edit1 um texto que será entregue ao Whatsapp para que ao selecionarmos o contato nele a mensagem seja enviada.
Agora que já temos o conceito vamos codificar.
Vale lembrar que devemos mais uma vez fazer uso dos Namespaces ou Units para utilização dos recursos do Android no Delphi, para tal
na seção implementation insira os:
1implementation
3{$R *.fmx}
4uses
5 FMX.Helpers.Android, Androidapi.Jni.GraphicsContentViewText,
Androidapi.JNIBridge, Androidapi.Helpers;
7
else
8
mensagem := Edit1.Text;
9
10
11
IntentWhats := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_SEND);
12
IntentWhats.setType(StringToJString('text/plain'));
13
IntentWhats.putExtra(TJIntent.JavaClass.EXTRA_TEXT,
14
StringToJString(mensagem));
15 IntentWhats.setPackage(StringToJString('com.whatsapp'));
16 SharedActivity.startActivity(IntentWhats);
17
18end;
19
20
Confira o resultado
Bem basta compilar e testar, confira nas imagens abaixo que funcionou perfeitamente. Parte que ainda não obtive sucesso foi selecionar o
contato previamente, porém continuarei tentando e conseguindo subo uma atualização.
Como pode ver o mecanismo utilizado para efetuar a comunicação do nosso aplicativo com o Whatsapp é o que já citamos aqui no blog
inúmeras vezes: Intents, vale a pena ficar por dentro desse tema, que inclusive foi o tema de minha palestra na Embarcadero Conference
2014.
Até a próxima!
Relacionado
Em "Delphi"
Como alterar o nome do pacote de sua aplicação Delphi XE7 Android
Em "Delphi"
Em "Delphi"
AndroidDelphi XE7desenvolvimentodestaqueTutorial
Navegação do post
Post anteriorComo alterar o nome do pacote de sua aplicação Delphi XE7 AndroidPróximo postIntegrando Aplicação Delphi XE7 Android com o Twitter
1. Thiago
Olá, Quando meu app é executado em um dispositivo com tamanho de tela diferente os componentes ficam fora do lugar original,
quero saber como fazer para os componentes ficar ajustado independente do tamanho da tela.
Responder
2. Jailson
Responder
1. Landerson Gomes
Responder
3. Jailson
Boa tarde Landerson! Existe a possibilidade de mandar as mensagens em lote? Ex: mandar uma mensagem para todos os meus
contatos.
Responder
1. Landerson Gomes
Olá Jailson! Bem vindo ao Blog! Existir até que existe essa possibilidade sim, entretanto como não temos aí via programação
a possibilidade de informar o destinatário da mensagem fica inviável, pelo menos por enquanto, afinal ainda não consegui
encontrar a solução para este caso!
Responder
4. Douglas Francisco
Landerson, tem como ler as mensagens recebidas do WhatsApp e direciona-la a um aplicativo Delphi ?? Tipo uma central de
Mensagens ???
Responder
5. Thiago
Responder
6. Brito
Prezado Landerson , tem como acessar a agenda do celular neste mesmo contexto , ??
Responder
1. Landerson Gomes
Espero que seja útil, obrigado por sua participação e até a próxima!
Responder
7. eliel
Show de bola!
Responder
8. Dalvan Bevilaqua
Responder
1. Landerson Gomes
Olá Dalvan… acredito que tenha, só não conseguimos achar… nem em java nem em Delphi!
Mas continuo pesquisando.
Cheguei a passar o material de pesquisa utilizado na postagem para outros membros da comunidade Delphi, para que
tivéssemos uma força maior de busca, mas ainda não encontramos.
Quem sabe o Whatsapp um dia libera a fonte?!
Responder
1. Luciano
Pelo que vi tem que enviar um parametro chamado abid. Só que esse parâmetro é o id do contato na agenda do celular,
pelo que entendi.
Responder
1. Landerson Gomes
Olá Luciano… a integração com os contatos esbarra exatamente nisso, o ID vem do Android, não
exclusivamente do Whatsapp.
Mas seria exatamente por essa linha, você faria a seleção com base no ID do contato para o qual a mensagem
será transmitida.
Responder
2. warley
Responder
1. Juninho
Responder
9. Marcones
Muito boa a Matéria. E ja existe a possibilidade de fazer o mesmo com o iOS? Ou seja, enviar o link para o Whatsapp do iPhone?
Responder
1. Landerson Gomes
Lamento não poder ajudá-lo de maneira precisa ou mais esclarecedora, porém é um tema que realmente conta apenas com
minha “ignorância”.
Espero que consiga, e em conseguindo passe por aqui para deixar um feedback!
Responder
10. Fabricio
Olá,
Obrigado por compartilhar o conhecimento, era exatamente o que eu procurava. Mas agora surgiu a necessidade de adicionar um
numero nos contatos do android, isso é possivel usando delphi? como fazer?
abraço.
Responder
1. Landerson Gomes
Responder
1. Fabricio
Olá,
Obrigado pelo retorno, mas quero realmente é inserir na agenda, pra driblar isso aí. Teria algum exemplo em XE7?
abraço.
Responder
11. Lúcio Coelho
Responder
1. Luciano Petuco
Responder
Se possível gostaria de tirar uma dúvida … Estou tendo erro no momento da compilação . O projeto é compilado tudo corretamente,
no caso não estou executando em um emulador e sim em um aparelho próprio , e a aplicação não aparece na tela do dispositivo.
Aparece a primeira tela da compilação do projeto, mas o aplicativo em si não aparece . Teria alguma ideia do que pode ser ?!
Desde já agradeço. Grande abraço e sucesso!
Responder
1. Landerson Gomes
Seria interessante você enviar versão do Delphi e versão do Android do dispositivo para que possa analisar, talvez seja algum
update já conhecido que esteja faltando.
Responder
1. Roger César
Responder
13. Jaques
Obrigado!!!
Responder
1. Landerson Gomes
Até a próxima!
Responder
14. Gustavo
Responder
16. luis
janeiro 18, 2016 às 09:16
Responder
1. Landerson Gomes
Olá Luis obrigado pela contribuição… vou testar e dando certo posso postar aqui com seus respectivos créditos?
Ou você já tem essa solução postada em algum lugar para que eu utilize o link para seu post?
Mais uma vez obrigado por sua participação, seja bem vindo e volte sempre que puder!
Responder
2. Alexandre NT
Olá Luis, como utilizar esse comando “sendwhats” ? testei de várias formas mas não consegui.
Responder
17. ISRAEL
bom tutorial.. mais é posssivel enviar message direta a um numero no delphi a um whatapp numero tipo enviar a um numero
especifico do whataap direto…..
Responder
Responder
19. Vinicius
abril 26, 2016 às 20:34
vou colocar aqui um código que montei, a partir do seu, para enviar arquivos pelo WhatsApp, no meu caso fotos (imagens em jpg).
Se testarem e/ou acharem melhor deletarem este post, fiquem a vontade. Eu já testei em vários dispositivos e funcionou legal.
Cada desenvolvedor deve fazer suas adaptações, eu mesmo estou usando de outra maneira para passar os arquivos a serem enviados,
como um array of string com a lista de arquivos que selecionei anteriormente ao uso da procedure.
Vamos lá…
procedure TFandroid.WhatsAppImage;
var
IntentWhats :JIntent;
FileUri :Jnet_Uri;
iArq :integer;
mensagem, sArqOrig1, sArqOrig2, sArqEnv1, sArqEnv2 :string;
ListArqs :JArrayList;
begin
if Edit1.Text.IsEmpty then
mensagem := „Teste de envio do Whatsapp com Delphi XE7. „+ #13+#10+
„Confira mais no blog http://www.vivaitaocara.com.br/landersongomes/„
else
mensagem := Edit1.Text;
sArqOrig1:=‟sua_pasta/arquivo1.jpg‟;
sArqOrig2:=‟sua_pasta/arquivo2.jpg‟;
//os arquivos devem ser copiados para uma pasta que o Whatapp possa ter acesso,
//como a pasta temporária do seu app (TPath.GetTempPath)
sArqEnv1:=TPath.GetTempPath +‟/‟+ ExtractFileName(sArqOrig1);
sArqEnv2:=TPath.GetTempPath +‟/‟+ ExtractFileName(sArqOrig2);
FileUri:=TJNet_Uri.JavaClass.fromFile(TJFile.JavaClass.init(StringToJString(sArqEnv1)));
iArq:=0;
ListArqs.add(iArq,FileUri);
FileUri:=TJNet_Uri.JavaClass.fromFile(TJFile.JavaClass.init(StringToJString(sArqEnv2)));
inc(iArq);
ListArqs.add(iArq,FileUri);
IntentWhats := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_SEND);
IntentWhats.setType(StringToJString(„text/plain‟));
IntentWhats.putExtra(TJIntent.JavaClass.EXTRA_TEXT,StringToJString(mensagem));
//para audio („audio/mp3‟) ou („audio/mpeg3‟) ou ainda („audio/*‟)
IntentWhats.setType(StringToJString(„image/jpg‟));
IntentWhats.putParcelableArrayListExtra(TJIntent.JavaClass.EXTRA_STREAM,ListArqs);
IntentWhats.setPackage(StringToJString(„com.whatsapp‟));
//substiua a próxima linha pela a anterior se quiser ter a opção de escolher com qual app compartilhar
//SharedActivity.startActivity (TJIntent.JavaClass.createChooser(IntentWhats,StrToJCharSequence(„Compartilhar com?‟)));
end;