Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Nesta postagem veremos como obter o número da linha telefônica associada ao chip
(Sim Card) de um dispositivo Android através de uma aplicação desenvolvida com
Delphi XE5.
Quando utilizar
Imagine que você como desenvolvedor necessite por algum motivo captar os números de telefones dos dispositivos que fizeram acesso à sua
aplicação… veja como é fácil fazer isso usando pouquíssimas linhas de código. Vamos lá ?!
Direto ao Delphi
Inicie um novo projeto Mobile no Delphi XE5, como já fizemos diversas vezes aqui no blog, selecione a opção Blank Application.
No seu formulário principal vamos inserir 1 Button e 1 Image e alterar suas propriedades como segue:
Button1
o Align -> alBottom
o Text -> Verificar Número do Telefone
Image1
o Align -> alClient
o MultiResBitmap -> [selecione uma imagem as seu gosto].
Ao final deste processo a interface de sua aplicação será próxima ao exibido na imagem abaixo:
Funcionamento da Aplicação: codificando
Antes de mais nada precisamos declarar os namespaces que “promovem a interação Delphi X Java/Android“. Para tal na cláusula uses da
seção Implementation do Formulário vamos inserir:
1implementation
3{$R *.fmx}
4uses
5 Androidapi.JNI.Telephony, Androidapi.JNI.Provider ,
6 Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText ,
Androidapi.JNI.JavaTypes,FMX.Helpers.Android;
7
A ideia para o funcionamento da aplicação é bem simples: o usuário pressiona o botão e uma mensagem será exibida na tela com o número
de telefone associado ao sim card do contido no dispositivo.
1
procedure TForm1.Button1Click(Sender: TObject);
2
var
3 TTelMgr: JTelephonyManager;
4 NumeroFone: String;
5 begin
6 TTelMgr := TJTelephonyManager.Wrap((SharedActivityContext.getSystemService(
7 TJContext.JavaClass.TELEPHONY_SERVICE) as ILocalObject).GetObjectID);
NumeroFone := JStringToString(TTelMgr.getLine1Number);
8
9
ShowMessage('Número: ' + NumeroFone);
10
11
end;
12
Que tal testarmos ?
Nota 1: Em alguns casos o valor retornado pode ser nulo (NULL), isso se dá por que a operadora pode não ter
gravado o número da linha no chip (sim card). Para resolver o usuário pode no próprio dispositivo Android gravar
o número no chip. Outra solução para o caso de aplicação onde necessite armazenar essa informação é solicitá-la
ao usuário e mantê-la num banco de dados.
Nota 2: Como default a configuração do Delphi XE5 já traz habilitada a permissão READ_PHONE_STATE do Android, não
menciono a mesma na postagem. Mas faz-se necessário uma conferida na mesma e se não estiver habilitada é
imprescindível que o faça.
Até a próxima!!!
Relacionado
Em "Delphi"
Construindo uma Tela Inicial para Aplicativos Android com Delphi XE5
Em "Delphi"
Em "Delphi"
AndroiddelphiDelphi XE5desenvolvimentoTutorial
Navegação do post
Post anteriorLeitura de Código de Barras em Android com Delphi XE5Próximo postEncerrar aplicação Android através de Caixa de Diálogo com Delphi
XE5
1. jailson
Responder
1. Landerson Gomes
Ele no caso, é usuário da versão XE6, se for este também o seu caso deve resolver.
Abraço.
Responder
1. jailson
Landerson Gomes primeiramente queria lhe parabenizar pelos seus projetos, vem ajudando muito tanto pra mim como
para outros. Teria como fazer um exemplo a questão do teclado ao ser acionado não cobrir os componentes (Edit por
Exemplo) e sim posicionar. Tem alguma orientação pra isso? obg!
Responder
1. Landerson Gomes
Meu grande Jailson… obrigado pelas palavras! A ideia do blog na verdade é apenas compartilhar desafios de
projetos que eu passe no cotidiano e exercitar um pouco a escrita e a didática! (rs)
Com relação a esta questão do teclado vou pesquisar, pois nesse último projeto que fiz, cheguei a mudar um
componente de posição para fugir do problema (rs).
Obrigado pela presença e conseguindo, em breve espero eu, posto algo aqui sobre o teclado não sobrepor os
componentes.
Abração!
Responder
1. jailson
Muito obg! Encontro a disposição tbm, gostaria de tirar algumas dúvidas srsr, mas vou deixa-las
surgirem em seu cotidiano para vc compartilhar conosco, vlw!
2. jailson
3. Eduardo
Alguém teve problema com a operadora Claro? Pq no meu exemplo não aparece o número do meu celular
Responder
4. Eduardo
Na operadora Claro o meu tbm não aparece. Tem como resolver isso?
Responder
1. Landerson Gomes
Olá Eduardo! Como citei na Nota 1 da postagem, algumas operadoras realmente não efetuam a gravação desta informação no
SIM CARD.
Única forma de resolver, é o usuário inserir essa informação. Isso pode ser feito em Configurações -> Gerenciar Cartão
SIM.
Até a próxima!
Responder
1. Eduardo
Eu utilizo um Galaxy Note 3 e já procurei onde colocar isso e não achei, vc sabe onde é?
Responder
5. Thiago
Eduardo, o meu também é um note 3 estou usando o xe7 a minha aplicação não chegou nem abrir. Abraços