Sunteți pe pagina 1din 10

Delphi, Tutorial

Obter o IMEI de dispositivo Android com Delphi XE5


maro 28, 2014 Landerson Gomes 20 Comentrios
Compartilhe

Quando se fala de Mobilidade garantir que informaes corporativas sejam visualizadas


apenas por pessoal autorizado essencial. Nessa postagem vamos implementar a
autenticao de uma aplicao Delphi XE5 Android atravs do IMEI do dispositivo.
IMEI a identificao do dispositivo
IMEI o acrnimo de Mobile Equipment Identity (Identificao Internacional de Equipamento Mvel). Trata-se de uma sequncia de
nmeros e caracteres especiais nica para cada dispositivo. A ideia bem parecida com o MAC address das placas de rede. Isso facilita na
hora de localizar um aparelho especfico em meio s centenas de dispositivos colocados no mercado todos os meses.

Criando a aplicao Mobile Delphi XE5


Crie um novo projeto Mobile no Delphi XE5. No fonte do form da aplicao vamos adicionar as seguintes referncias na clausula uses:
1

uses

FMX.Platform.Android,

Androidapi.JNI.Telephony,

Androidapi.JNI.Provider ,

Androidapi.JNIBridge,

Androidapi.JNI.GraphicsContentViewText,

7
8

Androidapi.JNI.JavaTypes,
FMX.Helpers.Android;

No form vamos adicionar um Button, alterar sua propriedade Text para Capturar IMEI e a propriedade Name para btnCapturarIMEI.

Vamos codificar seu evento onClick como abaixo:


procedure TForm1.btnCapturarIMEIClick(Sender: TObject);

1
var

obj: JObject;

tm: JTelephonyManager;

IMEI: String;

5
6

begin
obj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
if obj <> nil then

7
begin

tm := TJTelephonyManager.Wrap( (obj as ILocalObject).GetObjectID );

if tm <> nil then

10

IMEI := JStringToString(tm.getDeviceId);

11

end;

12

if IMEI = '' then

13

IMEI := JStringToString(TJSettings_Secure.JavaClass.getString(
SharedActivity.getContentResolver,
TJSettings_Secure.JavaClass.ANDROID_ID));

14
15

ShowMessage('IMEI :' + #13 + IMEI);

16
17end;
18
19

Fcil extremamente fcil


Execute a aplicao e clicando sobre o boto o IMEI do seu dispositivo ser exibido.

Vimos como fcil capturar o IMEI atravs de uma aplicao Android Delphi XE5.

Implementando um banco de dados contendo os IMEI's autorizados e fazendo uma pesquisa neles voc pode garantir o
acesso apenas aos dispositivos previamente cadastrados no seu servidor de aplicao.

isso simples assim!


At a prxima!

Relacionado

Obtendo o nmero do telefone Android com Delphi XE5

Em "Delphi"

Encerrar aplicao Android atravs de Caixa de Dilogo com Delphi XE5

Em "Delphi"

Delphi XE5 Acessando a Cmera e compartilhando imagens do dispositivo Android

Em "Delphi"

AndroidDelphi XE5Tutorial

Navegao do post
Post anteriorAtendimento das nuvensPrximo postLeitura de Cdigo de Barras em Android com Delphi XE5

20 opinies sobre Obter o IMEI de dispositivo Android com Delphi XE5


1.

Julio Santos
maro 28, 2014 s 22:38

Muito legal o exemplo


Responder

2.

Anderson de Oliveira Furtilho


maro 31, 2014 s 21:47

Valeu a dica..
Deu certinho!
Aguardamos mais abrao
Responder

3.

Rodrigo
abril 26, 2014 s 08:39

Gostei muito parabns esperamos mais dessas dicas so muito valiosas


Responder

1.

Landerson Gomes
abril 27, 2014 s 09:59

Ol Rodrigo que bom que tem gostado. Espero sim poder trazer algo interessante e usa sempre.
Um abrao e obrigado pela participao.
Responder

4.

Guilherme Lanius
maio 19, 2014 s 16:56

Como posso conseguir o IMEI do aparelho no IOS?

Responder

1.

Landerson Gomes
maio 23, 2014 s 12:09

Ol Guilherme, obrigado por sua interao.


Infelizmente no tenho nada publicado em relao a IOS. Foquei mesmo sempre no Android.
Lamento no poder contribuit mas realmente o meu conhecimento envolvendo a ma bem prximo do nulo.
Espero que consiga encontrar a resposta.
Um abrao.
Responder

5.

Yago Souza
junho 6, 2014 s 14:45

Ol Landerson Gomes, muito obrigado por compartilhar essas funes, todas so muito uteis. Comecei a desenvolver uma aplicao
Android no XE6 com integrao com um Sistema Desktop cujo seu o BD Firebird, consigo conectar sem problemas na rede local,
minha dificuldade conectar por outra Rede. Voc teria alguma soluo para isso? No possuo um IP Fixo, mas j direcionei diversas
portas do modem/roteador e tambm j tentei usar o No-IP. Voc poderia me ajudar? Obrigado!
Responder

1.

Landerson Gomes
junho 10, 2014 s 04:00

Yago bom dia.


Tentarei entrar em contato com voc. Mas como j mencionei no tem nada de mais elaborado que isso no. nica coisa que
precisa garantir que as rotas externas conseguiro acessar a porta direcionada ao servio.
Me mande seu endereo skype.
Um abrao.
Responder

6.

RUBERVAL PEREIRA ALVES


junho 24, 2014 s 14:32

GOSTARIA DE UM APLICATIVO PARECIDO COM ESSE QUE RETORNA O IMEI, MAS QUE RETORNASSE O NUMERO
DO CELULAR. OK, SE TIVESSE ALGUM QUE DESENVOLVESSE TAM BM ME AJUDARIA,
GRATO
RUBERVAL
Responder

1.

Landerson Gomes
junho 24, 2014 s 15:44

Ol Ruberval posto algo sobre isso na prxima postagem.


Mas j deixo adiantado o seguinte: o nmero do telefone fica gravado no chip e tem casos em que a operadora no faz isso.
Cheguei a achar que tinha um erro de programao quando na verdade fui pesquisar e descobri que na tecnologia GSM (base
de telefonia mvel no Brasil) isso ocorre.
Semana que vem disponibilizo um tutorial sobre isso ok?!
Abrao e obrigado pela participao!
Responder

7.

Tiago
setembro 1, 2014 s 16:48

Fiz direitinho como vc disse, mas esta dando Undeclared identifier: JStringToString vc pode me ajudar fazendo um grande
favor????
Responder

1.

Landerson Gomes
setembro 2, 2014 s 13:47

Ol Tiago! Seja bem vindo ao blog!


Com relao mensagem, acredito que voc esteja usando o Delphi XE6, j foi sinalizado em algumas postagens que no XE6
a funo JStringToString foi transportada para a Namespace Androidapi.Helpers.
Confirme se com essa alterao resolve.
Abrao e no esquea de postar aqui um feedback!
Responder

1.

Fernand Tobias
setembro 27, 2014 s 15:44

Muito obrigado, estava com o mesmo erro e agora deu certinho.


Responder

2.

Celso
novembro 2, 2014 s 08:55

no XE7 resolve !!!,


Obrigado
Responder

3.

Clark
agosto 11, 2015 s 15:45

Fala Landerson, ressucitando o post e informando que utilizando a Namespace Androidapi.Helpers consegui capturar
o IMEI do aparelho. Obrigado.
Responder

1.

Landerson Gomes
agosto 13, 2015 s 12:41

Ol Clark que bom que achou a! Espalhado pelos comentrios nos diversos posts h essa sinalizao A
partir do XE6 a Android.Helpers passa a levar por exemplo a StringToJString.
Enfim, se voc j resolveu timo fica ento meu agradecimento por sua participao!
Obrigado e at uma prxima.
Responder

8.

alan
outubro 17, 2014 s 12:57

Galera, boa tarde! Algum sabe como capturar o IP do dispositivo? Tipo: 192.168.0.1??
Responder

9.

Jefferson
novembro 1, 2015 s 15:05

pra quem esta usando Delphi Seattle, algumas coisas mudaram. Segue antes e depois o codigo comentario na verso antiga.
Units declaradas:
Androidapi.JNI.GraphicsContentViewText,AndroidApi.Helpers,
Androidapi.JNI.Telephony,Androidapi.JNI.Provider,Androidapi.JNIBridge,
Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, Androidapi.jni.App;
// obj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
obj := TAndroidHelper.Activity.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
//IMEI := JStringToString(TJSettings_Secure.JavaClass.getString(SharedActivity.getContentResolver,
TJSettings_Secure.JavaClass.ANDROID_ID));

IMEI := JStringToString(TJSettings_Secure.JavaClass.getString( TAndroidHelper.Activity.getContentResolver,


TJSettings_Secure.JavaClass.ANDROID_ID));
Responder

1.

Landerson Gomes
novembro 14, 2015 s 21:33

Perfeito Jefferson todas essas funes foram refatoradas e as mudanas so necessrias!


Obrigado por sua participao e at a prxima!
Responder

10.

Jefferson
novembro 1, 2015 s 15:06

Algum conseguiu obter o IMEI do Iphone?


Responder

Deixe uma resposta


Conecte-se com sua rede social favorita

O seu endereo de e-mail no ser publicado. Campos obrigatrios so marcados com *

Comentrio
Nome *
E-mail *
Site
Avise-me sobre comentrios seguintes por email.
Avise-me sobre novas publicaes por email.

S-ar putea să vă placă și