SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
Programação Android Avançada
ACESSO WEB EM ANDROID
Prof. André Márcio de Lima Curvello
andre.ml.curvello@gmail.com
WebView
◦ View Android específica para exibição de conteúdo Web
◦ HTML + CSS + JavaScript
◦ Funcionamento idêntico ao Browser do Android
◦ Uso do WebKit
◦ Permite embarcar conteúdo web em aplicação Android
◦ Local – armazenado na aplicação
◦ Remoto
WebView
◦ Por ser uma View, pode então:
◦ Ser posicionada em algum lugar no design interface de usuário.
◦ Possuir dimensões específicas.
◦ Ou ocupar a tela inteira.
◦ Deve possuir uma ID.
◦ Deve ser atribuída a seu objeto
WebView equivalente.
WebView
◦ Aplicações
◦ Exibir conteúdo formatado na aplicação
◦ Texto justificado com imagens
◦ Fontes personalizadas
◦ Exibir animações em formato *.GIF
◦ Reuso de código para aplicação Web em aplicação Nativa.
WebView
◦ Acesso Off-line - HardCoded
◦ É criada uma String com o conteúdo a ser exibido.
◦ Para ser exibido, chama-se o método loadData, passando por parâmetro a String, seu tipo
(“text/html”) e encoding (“UTF-8”) a ser utilizado.
◦ Não precisa de permissão para acesso Web.
WebView
◦ Acesso Off-line - Assets
◦ É preciso colocar a página e sua estrutura no diretório “assets” do projeto da aplicação
◦ A exibição do conteúdo é iniciada com a chamada de loadUrl, passando por parâmetro o endereço
URL do arquivo HTML no diretório assets.
◦ Não precisa de permissão para acesso Web
WebView
◦ Acesso On-line
◦ Basta passar a URL da aplicação na chamada de loadUrl do objeto WebView.
◦ É preciso ter a permissão de acesso à INTERNET no Manifesto da aplicação
WebView
◦ A WebView permite parametrizar o acesso ao conteúdo Web.
◦ O desenvolvedor tem acesso a recursos que permitem definir configurações tais
como:
◦ Habilitar suporte a Zoom
◦ Salvar dados de Formulários
◦ Salvar dados de passwords (senhas)
◦ Habilitar suporte a JavaScript – Desabilitado por padrão
◦ Carregar imagens automaticamente...
◦ Controlar forma de Scroll.
◦ Dentre outros, pesquise!
WebView – Alguns métodos
◦ canGoBack() – Especifica que pode ter histórico de retorno.
◦ goBack() – retorna uma página no histórico.
◦ canGoForward() – Especifica que pode ter histórico para adiante.
◦ goForward() – avança uma página no histórico.
◦ clearHistory() – Limpa todo o histórico da instância de WebView.
◦ destroy() - Destrói o estado interno da WebView.
◦ findAllAsync(String find) – Encontra as ocorrências de “find” e destaca-as no texto.
◦ getProgress() – Obtém o progresso da página atual.
◦ getTitle() – Obtém o título da página.
◦ getUrl() – Obtém a URL da página.
WebView – Alguns métodos
◦Dá pra você fazer seu próprio “Navegador” Web
◦ Utilizando dos recursos do WebView e do WebKit associados.
◦ Utilizando dos eventos de navegação
◦ Tratamento de entrada de dados
do usuário
◦ Etc!
WebViewClient
◦ Adicional ao WebView que permite uma customização ainda maior da interação do usuário
com a WebView e a aplicação, de modo a:
◦ Interceptar e filtrar chamadas a URLs específicas
◦ Permite manter o fluxo de páginas dentro da aplicação
◦ Bloqueia o usuário de abrir páginas não desejadas
◦ Ou permite que demais conteúdos sejam exibidos no Browser nativo do Android
◦ Permite interceptar respostas HTTP – Erro, OK, etc...
◦ Tratar eventos tais como teclas pressionadas
◦ Caso o usuário pressione Enter...
◦ Caso o usuário pressione Voltar...
◦ E assim realizar alguma ação específica.
WebChromeClient
◦ Adicional ao WebView que permite uma maior interação com chamadas JavaScript
da página e demais recursos tais como:
◦ A exibição de alert()
◦ Ou em vez de exibir alert() – exibir uma AlertDialog em Android
◦ Obter ícone de favorito do site – favicon
◦ Obter o nome de título do site
◦ Obter o progresso de carregamento do site
◦ Exibir janela para seleção de arquivo
◦ Integração com console JavaScript
◦ Dentre outros!
JavaScript Interface
◦ É uma classe que fará a ponte entre o conteúdo Web e a aplicação Android
por meio de JavaScript.
◦ Precisa ter um construtor com atributo de contexto de aplicação.
◦ Terá os métodos que serão chamados pela aplicação Web
Ou seja...
Implementará as “interfaces”
-Parâmetros...?
-Retornos...?
-Funcionamento...?
Você define.
Direção da comunicação:
Web  Android
JavaScript Interface
◦ É de fundamental importância que o JavaScript esteja habilitado na WebView
utilizada.
◦ Depois de criada a Classe de Interface, seu vínculo é feito com o método do
objeto WebView:
◦ Exemplo:
JavaScript Interface
◦ Vejam o seguinte exemplo de página Web que faz interface com o código Android:
◦ Vejam que foi determinado
que o objeto será chamado
por “Android” no código
JavaScript.
JavaScript Interface
◦ E se você quiser chamar um recurso da página Web, na WebView, a partir da
aplicação Android?
◦ Basta chamar loadUrl do objeto WebView, tendo a URL de parâmetro a seguinte
estrutura:
◦ Início – “javascript:” – indica que é uma chamada a uma rotina JavaScript
◦ Depois – nome da sua função no código JavaScript
◦ E depois - Demais parâmetros, respeitando aspas, etc.
Considerações
◦ Nem todas as WebViews terão a mesma renderização
◦ Versões diferentes de Android  WebKits sutilmente diferentes, etc.
◦ Performance
◦ Haverá um overhead de processamento em chamadas de interface
◦ Comportamento de Zoom e Scroll
◦ Podem conflitar entre o Zoom e Scroll nativos da aplicação VS do conteúdo Web.
◦ Complexidade
◦ Começa a misturar código Android com código Web
◦ Precisa ter infraestrutura online ou estrutura de projeto offline
◦ Segurança
◦ Cuidados com a exposição de códigos de interface Web - Android
Atividade
◦ Crie uma aplicação Android Nativa com conteúdo nativo e WebView.
◦ WebView deverá ocupar a metade inferior da tela
◦ Na aplicação Android Nativa, faça uma estrutura com campos para inserção de
nome e sobrenome, e um botão.
◦ Na página off-line em WebView, faça um form para inserção de nome e
sobrenome, e um botão que irá chamar uma rotina JavaScript.
◦ O botão Update Native deverá atualizar os campos da página Web com o
conteúdo digitado pelo usuário na aplicação Android nativa.
◦ O botão Update Web View deverá atualizar os campos da aplicação Android
com o conteúdo digitado pelo usuário na webview.
Observação
◦ Na chamada de interface JavaScript que fará a alteração de campos na
aplicação Android, é recomendável utilizar um método tal como
runOnUiThread para executar a operação.
◦ Caso contrário, não será possível alterar o conteúdo das Views desejadas.
◦ Exemplo:

Weitere ähnliche Inhalte

Was ist angesagt?

Offline apps Using Ionic Framework and PouchDB
Offline apps  Using Ionic Framework and PouchDBOffline apps  Using Ionic Framework and PouchDB
Offline apps Using Ionic Framework and PouchDBAlvaro Viebrantz
 
T@rget trust desenvolvendo aplicações com flex
T@rget trust   desenvolvendo aplicações com flexT@rget trust   desenvolvendo aplicações com flex
T@rget trust desenvolvendo aplicações com flexTargettrust
 
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAWilson Mendes
 
Introdução ao selenium
Introdução ao seleniumIntrodução ao selenium
Introdução ao seleniumAldrin Leal
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 
Performance com AngularJS
Performance com AngularJSPerformance com AngularJS
Performance com AngularJSWilson Mendes
 
Jquery - Apresentação e aplicação prática
Jquery - Apresentação e aplicação práticaJquery - Apresentação e aplicação prática
Jquery - Apresentação e aplicação práticaTeles Maciel
 
Vuejs
VuejsVuejs
Vuejsceife
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Rodrigo Branas
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScriptCarlos Eduardo Kadu
 
Grails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeGrails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeCleórbete Santos
 
Desenvolvimento Do jQuery Light Box Plugin ao vivo
Desenvolvimento Do jQuery Light Box Plugin ao vivoDesenvolvimento Do jQuery Light Box Plugin ao vivo
Desenvolvimento Do jQuery Light Box Plugin ao vivoLeandrinho Vieira
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
Jquery - Apresentação e aplicação prática
Jquery - Apresentação e aplicação práticaJquery - Apresentação e aplicação prática
Jquery - Apresentação e aplicação práticaTeles Maciel
 

Was ist angesagt? (20)

Offline apps Using Ionic Framework and PouchDB
Offline apps  Using Ionic Framework and PouchDBOffline apps  Using Ionic Framework and PouchDB
Offline apps Using Ionic Framework and PouchDB
 
T@rget trust desenvolvendo aplicações com flex
T@rget trust   desenvolvendo aplicações com flexT@rget trust   desenvolvendo aplicações com flex
T@rget trust desenvolvendo aplicações com flex
 
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
 
Introdução ao selenium
Introdução ao seleniumIntrodução ao selenium
Introdução ao selenium
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
Performance com AngularJS
Performance com AngularJSPerformance com AngularJS
Performance com AngularJS
 
Jquery - Apresentação e aplicação prática
Jquery - Apresentação e aplicação práticaJquery - Apresentação e aplicação prática
Jquery - Apresentação e aplicação prática
 
Vuejs
VuejsVuejs
Vuejs
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
 
Angular js
Angular jsAngular js
Angular js
 
Codando com PHP e JQuery
Codando com PHP e JQueryCodando com PHP e JQuery
Codando com PHP e JQuery
 
jQuery
jQueryjQuery
jQuery
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Grails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeGrails: O Java em Alta Produtividade
Grails: O Java em Alta Produtividade
 
Apresentação Jquery
Apresentação JqueryApresentação Jquery
Apresentação Jquery
 
Visão Geral sobre Angular JS
Visão Geral sobre Angular JSVisão Geral sobre Angular JS
Visão Geral sobre Angular JS
 
Desenvolvimento Do jQuery Light Box Plugin ao vivo
Desenvolvimento Do jQuery Light Box Plugin ao vivoDesenvolvimento Do jQuery Light Box Plugin ao vivo
Desenvolvimento Do jQuery Light Box Plugin ao vivo
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Jquery - Apresentação e aplicação prática
Jquery - Apresentação e aplicação práticaJquery - Apresentação e aplicação prática
Jquery - Apresentação e aplicação prática
 

Ähnlich wie Acesso Web em Android

Desenvolvimento de aplicações mobile com bootstrap, cordova e vue.js
Desenvolvimento de aplicações mobile com bootstrap, cordova e vue.jsDesenvolvimento de aplicações mobile com bootstrap, cordova e vue.js
Desenvolvimento de aplicações mobile com bootstrap, cordova e vue.jsGustavo Castro
 
Rapid Application Development com Tapestry 5
Rapid Application Development com Tapestry 5Rapid Application Development com Tapestry 5
Rapid Application Development com Tapestry 5Marcelo Rodrigues
 
HTML 5, CSS 3 e o futuro da Web
HTML 5, CSS 3 e o futuro da WebHTML 5, CSS 3 e o futuro da Web
HTML 5, CSS 3 e o futuro da WebDiego Pessoa
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidRafael Sakurai
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realComunidade NetPonto
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Alex Guido
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Rodrigo Urubatan
 
Criação de Ambientes de Realidade Virtual usando A-Frame
Criação de Ambientes  de Realidade Virtual  usando A-FrameCriação de Ambientes  de Realidade Virtual  usando A-Frame
Criação de Ambientes de Realidade Virtual usando A-FrameJorge Cardoso
 
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchDesenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchCampus Party Brasil
 
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e KotlinO uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e KotlinDavid Robert Camargo de Campos
 

Ähnlich wie Acesso Web em Android (20)

JQuery Mobile
JQuery MobileJQuery Mobile
JQuery Mobile
 
Desenvolvimento de aplicações mobile com bootstrap, cordova e vue.js
Desenvolvimento de aplicações mobile com bootstrap, cordova e vue.jsDesenvolvimento de aplicações mobile com bootstrap, cordova e vue.js
Desenvolvimento de aplicações mobile com bootstrap, cordova e vue.js
 
Rapid Application Development com Tapestry 5
Rapid Application Development com Tapestry 5Rapid Application Development com Tapestry 5
Rapid Application Development com Tapestry 5
 
Web 3.0
Web 3.0Web 3.0
Web 3.0
 
HTML 5, CSS 3 e o futuro da Web
HTML 5, CSS 3 e o futuro da WebHTML 5, CSS 3 e o futuro da Web
HTML 5, CSS 3 e o futuro da Web
 
Apresentação Google Android
Apresentação Google AndroidApresentação Google Android
Apresentação Google Android
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao Android
 
Zk Framework
Zk FrameworkZk Framework
Zk Framework
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida real
 
Web Performance Client Side
Web Performance Client SideWeb Performance Client Side
Web Performance Client Side
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.
 
Grails
GrailsGrails
Grails
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_
 
Criação de Ambientes de Realidade Virtual usando A-Frame
Criação de Ambientes  de Realidade Virtual  usando A-FrameCriação de Ambientes  de Realidade Virtual  usando A-Frame
Criação de Ambientes de Realidade Virtual usando A-Frame
 
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchDesenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
 
Aula 05 - Java Script Básico
Aula 05 -  Java Script BásicoAula 05 -  Java Script Básico
Aula 05 - Java Script Básico
 
React Native na globo.com
React Native na globo.comReact Native na globo.com
React Native na globo.com
 
Palestra ASP.NET MVC
Palestra ASP.NET MVCPalestra ASP.NET MVC
Palestra ASP.NET MVC
 
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e KotlinO uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin
 

Mehr von André Curvello

Sistemas embarcados e a contribuição para o combate a COVID-19
Sistemas embarcados e a contribuição para o combate a COVID-19Sistemas embarcados e a contribuição para o combate a COVID-19
Sistemas embarcados e a contribuição para o combate a COVID-19André Curvello
 
Blockchain em IoT - Desafios e considerações numa abordagem prática
Blockchain em IoT - Desafios e considerações numa abordagem práticaBlockchain em IoT - Desafios e considerações numa abordagem prática
Blockchain em IoT - Desafios e considerações numa abordagem práticaAndré Curvello
 
Arquitetando seu sistema de IoT com Azure
Arquitetando seu sistema de IoT com AzureArquitetando seu sistema de IoT com Azure
Arquitetando seu sistema de IoT com AzureAndré Curvello
 
Drones - Programando sistemas embarcados voadores e... autônomos!
Drones - Programando sistemas embarcados voadores e... autônomos!Drones - Programando sistemas embarcados voadores e... autônomos!
Drones - Programando sistemas embarcados voadores e... autônomos!André Curvello
 
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...André Curvello
 
Internet das Coisas - Na nuvem além da telemetria
Internet das Coisas - Na nuvem além da telemetriaInternet das Coisas - Na nuvem além da telemetria
Internet das Coisas - Na nuvem além da telemetriaAndré Curvello
 
Pilares da Computação para Internet das Coisas
Pilares da Computação para Internet das CoisasPilares da Computação para Internet das Coisas
Pilares da Computação para Internet das CoisasAndré Curvello
 
IoT Aplicada à Engenharia de Computação
IoT Aplicada à Engenharia de ComputaçãoIoT Aplicada à Engenharia de Computação
IoT Aplicada à Engenharia de ComputaçãoAndré Curvello
 
IoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
IoE - Internet de Todas as Coisas - Quais os Riscos de SegurançaIoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
IoE - Internet de Todas as Coisas - Quais os Riscos de SegurançaAndré Curvello
 
Linux Embarcado - O Sistema Operacional da Internet das Coisas
Linux Embarcado - O Sistema Operacional da Internet das CoisasLinux Embarcado - O Sistema Operacional da Internet das Coisas
Linux Embarcado - O Sistema Operacional da Internet das CoisasAndré Curvello
 
Rede CAN em Linux Embarcado para Aplicações Conectadas
Rede CAN em Linux Embarcado para Aplicações ConectadasRede CAN em Linux Embarcado para Aplicações Conectadas
Rede CAN em Linux Embarcado para Aplicações ConectadasAndré Curvello
 
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...André Curvello
 
TDC2017 - Sistemas Assimétricos com ARM e FPGA
TDC2017 - Sistemas Assimétricos com ARM e FPGATDC2017 - Sistemas Assimétricos com ARM e FPGA
TDC2017 - Sistemas Assimétricos com ARM e FPGAAndré Curvello
 
TDC2017 - Desvendando a Linux Device Tree
TDC2017 - Desvendando a Linux Device TreeTDC2017 - Desvendando a Linux Device Tree
TDC2017 - Desvendando a Linux Device TreeAndré Curvello
 
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.André Curvello
 
Internet das Coisas - Do Sensor à Nuvem, e Você?
Internet das Coisas - Do Sensor à Nuvem, e Você?Internet das Coisas - Do Sensor à Nuvem, e Você?
Internet das Coisas - Do Sensor à Nuvem, e Você?André Curvello
 
Linux Embarcado na Construção de Sistemas Inteligentes e Conectados
Linux Embarcado na Construção de Sistemas Inteligentes e ConectadosLinux Embarcado na Construção de Sistemas Inteligentes e Conectados
Linux Embarcado na Construção de Sistemas Inteligentes e ConectadosAndré Curvello
 
Veja como hackear seu carro usando Rede CAN com Arduino Due
Veja como hackear seu carro usando Rede CAN com Arduino DueVeja como hackear seu carro usando Rede CAN com Arduino Due
Veja como hackear seu carro usando Rede CAN com Arduino DueAndré Curvello
 
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016André Curvello
 
Sistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento AssimétricoSistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento AssimétricoAndré Curvello
 

Mehr von André Curvello (20)

Sistemas embarcados e a contribuição para o combate a COVID-19
Sistemas embarcados e a contribuição para o combate a COVID-19Sistemas embarcados e a contribuição para o combate a COVID-19
Sistemas embarcados e a contribuição para o combate a COVID-19
 
Blockchain em IoT - Desafios e considerações numa abordagem prática
Blockchain em IoT - Desafios e considerações numa abordagem práticaBlockchain em IoT - Desafios e considerações numa abordagem prática
Blockchain em IoT - Desafios e considerações numa abordagem prática
 
Arquitetando seu sistema de IoT com Azure
Arquitetando seu sistema de IoT com AzureArquitetando seu sistema de IoT com Azure
Arquitetando seu sistema de IoT com Azure
 
Drones - Programando sistemas embarcados voadores e... autônomos!
Drones - Programando sistemas embarcados voadores e... autônomos!Drones - Programando sistemas embarcados voadores e... autônomos!
Drones - Programando sistemas embarcados voadores e... autônomos!
 
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
 
Internet das Coisas - Na nuvem além da telemetria
Internet das Coisas - Na nuvem além da telemetriaInternet das Coisas - Na nuvem além da telemetria
Internet das Coisas - Na nuvem além da telemetria
 
Pilares da Computação para Internet das Coisas
Pilares da Computação para Internet das CoisasPilares da Computação para Internet das Coisas
Pilares da Computação para Internet das Coisas
 
IoT Aplicada à Engenharia de Computação
IoT Aplicada à Engenharia de ComputaçãoIoT Aplicada à Engenharia de Computação
IoT Aplicada à Engenharia de Computação
 
IoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
IoE - Internet de Todas as Coisas - Quais os Riscos de SegurançaIoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
IoE - Internet de Todas as Coisas - Quais os Riscos de Segurança
 
Linux Embarcado - O Sistema Operacional da Internet das Coisas
Linux Embarcado - O Sistema Operacional da Internet das CoisasLinux Embarcado - O Sistema Operacional da Internet das Coisas
Linux Embarcado - O Sistema Operacional da Internet das Coisas
 
Rede CAN em Linux Embarcado para Aplicações Conectadas
Rede CAN em Linux Embarcado para Aplicações ConectadasRede CAN em Linux Embarcado para Aplicações Conectadas
Rede CAN em Linux Embarcado para Aplicações Conectadas
 
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
Criando elementos conectados com visão computacional usando Raspberry Pi Zero...
 
TDC2017 - Sistemas Assimétricos com ARM e FPGA
TDC2017 - Sistemas Assimétricos com ARM e FPGATDC2017 - Sistemas Assimétricos com ARM e FPGA
TDC2017 - Sistemas Assimétricos com ARM e FPGA
 
TDC2017 - Desvendando a Linux Device Tree
TDC2017 - Desvendando a Linux Device TreeTDC2017 - Desvendando a Linux Device Tree
TDC2017 - Desvendando a Linux Device Tree
 
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
Indústria 4.0 - Do chão de fábrica à sua casa por um clique.
 
Internet das Coisas - Do Sensor à Nuvem, e Você?
Internet das Coisas - Do Sensor à Nuvem, e Você?Internet das Coisas - Do Sensor à Nuvem, e Você?
Internet das Coisas - Do Sensor à Nuvem, e Você?
 
Linux Embarcado na Construção de Sistemas Inteligentes e Conectados
Linux Embarcado na Construção de Sistemas Inteligentes e ConectadosLinux Embarcado na Construção de Sistemas Inteligentes e Conectados
Linux Embarcado na Construção de Sistemas Inteligentes e Conectados
 
Veja como hackear seu carro usando Rede CAN com Arduino Due
Veja como hackear seu carro usando Rede CAN com Arduino DueVeja como hackear seu carro usando Rede CAN com Arduino Due
Veja como hackear seu carro usando Rede CAN com Arduino Due
 
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
 
Sistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento AssimétricoSistemas Embarcados Híbridos - Processamento Assimétrico
Sistemas Embarcados Híbridos - Processamento Assimétrico
 

Acesso Web em Android

  • 1. Programação Android Avançada ACESSO WEB EM ANDROID Prof. André Márcio de Lima Curvello andre.ml.curvello@gmail.com
  • 2.
  • 3. WebView ◦ View Android específica para exibição de conteúdo Web ◦ HTML + CSS + JavaScript ◦ Funcionamento idêntico ao Browser do Android ◦ Uso do WebKit ◦ Permite embarcar conteúdo web em aplicação Android ◦ Local – armazenado na aplicação ◦ Remoto
  • 4. WebView ◦ Por ser uma View, pode então: ◦ Ser posicionada em algum lugar no design interface de usuário. ◦ Possuir dimensões específicas. ◦ Ou ocupar a tela inteira. ◦ Deve possuir uma ID. ◦ Deve ser atribuída a seu objeto WebView equivalente.
  • 5. WebView ◦ Aplicações ◦ Exibir conteúdo formatado na aplicação ◦ Texto justificado com imagens ◦ Fontes personalizadas ◦ Exibir animações em formato *.GIF ◦ Reuso de código para aplicação Web em aplicação Nativa.
  • 6. WebView ◦ Acesso Off-line - HardCoded ◦ É criada uma String com o conteúdo a ser exibido. ◦ Para ser exibido, chama-se o método loadData, passando por parâmetro a String, seu tipo (“text/html”) e encoding (“UTF-8”) a ser utilizado. ◦ Não precisa de permissão para acesso Web.
  • 7. WebView ◦ Acesso Off-line - Assets ◦ É preciso colocar a página e sua estrutura no diretório “assets” do projeto da aplicação ◦ A exibição do conteúdo é iniciada com a chamada de loadUrl, passando por parâmetro o endereço URL do arquivo HTML no diretório assets. ◦ Não precisa de permissão para acesso Web
  • 8. WebView ◦ Acesso On-line ◦ Basta passar a URL da aplicação na chamada de loadUrl do objeto WebView. ◦ É preciso ter a permissão de acesso à INTERNET no Manifesto da aplicação
  • 9. WebView ◦ A WebView permite parametrizar o acesso ao conteúdo Web. ◦ O desenvolvedor tem acesso a recursos que permitem definir configurações tais como: ◦ Habilitar suporte a Zoom ◦ Salvar dados de Formulários ◦ Salvar dados de passwords (senhas) ◦ Habilitar suporte a JavaScript – Desabilitado por padrão ◦ Carregar imagens automaticamente... ◦ Controlar forma de Scroll. ◦ Dentre outros, pesquise!
  • 10. WebView – Alguns métodos ◦ canGoBack() – Especifica que pode ter histórico de retorno. ◦ goBack() – retorna uma página no histórico. ◦ canGoForward() – Especifica que pode ter histórico para adiante. ◦ goForward() – avança uma página no histórico. ◦ clearHistory() – Limpa todo o histórico da instância de WebView. ◦ destroy() - Destrói o estado interno da WebView. ◦ findAllAsync(String find) – Encontra as ocorrências de “find” e destaca-as no texto. ◦ getProgress() – Obtém o progresso da página atual. ◦ getTitle() – Obtém o título da página. ◦ getUrl() – Obtém a URL da página.
  • 11. WebView – Alguns métodos ◦Dá pra você fazer seu próprio “Navegador” Web ◦ Utilizando dos recursos do WebView e do WebKit associados. ◦ Utilizando dos eventos de navegação ◦ Tratamento de entrada de dados do usuário ◦ Etc!
  • 12. WebViewClient ◦ Adicional ao WebView que permite uma customização ainda maior da interação do usuário com a WebView e a aplicação, de modo a: ◦ Interceptar e filtrar chamadas a URLs específicas ◦ Permite manter o fluxo de páginas dentro da aplicação ◦ Bloqueia o usuário de abrir páginas não desejadas ◦ Ou permite que demais conteúdos sejam exibidos no Browser nativo do Android ◦ Permite interceptar respostas HTTP – Erro, OK, etc... ◦ Tratar eventos tais como teclas pressionadas ◦ Caso o usuário pressione Enter... ◦ Caso o usuário pressione Voltar... ◦ E assim realizar alguma ação específica.
  • 13. WebChromeClient ◦ Adicional ao WebView que permite uma maior interação com chamadas JavaScript da página e demais recursos tais como: ◦ A exibição de alert() ◦ Ou em vez de exibir alert() – exibir uma AlertDialog em Android ◦ Obter ícone de favorito do site – favicon ◦ Obter o nome de título do site ◦ Obter o progresso de carregamento do site ◦ Exibir janela para seleção de arquivo ◦ Integração com console JavaScript ◦ Dentre outros!
  • 14. JavaScript Interface ◦ É uma classe que fará a ponte entre o conteúdo Web e a aplicação Android por meio de JavaScript. ◦ Precisa ter um construtor com atributo de contexto de aplicação. ◦ Terá os métodos que serão chamados pela aplicação Web Ou seja... Implementará as “interfaces” -Parâmetros...? -Retornos...? -Funcionamento...? Você define. Direção da comunicação: Web  Android
  • 15. JavaScript Interface ◦ É de fundamental importância que o JavaScript esteja habilitado na WebView utilizada. ◦ Depois de criada a Classe de Interface, seu vínculo é feito com o método do objeto WebView: ◦ Exemplo:
  • 16. JavaScript Interface ◦ Vejam o seguinte exemplo de página Web que faz interface com o código Android: ◦ Vejam que foi determinado que o objeto será chamado por “Android” no código JavaScript.
  • 17. JavaScript Interface ◦ E se você quiser chamar um recurso da página Web, na WebView, a partir da aplicação Android? ◦ Basta chamar loadUrl do objeto WebView, tendo a URL de parâmetro a seguinte estrutura: ◦ Início – “javascript:” – indica que é uma chamada a uma rotina JavaScript ◦ Depois – nome da sua função no código JavaScript ◦ E depois - Demais parâmetros, respeitando aspas, etc.
  • 18. Considerações ◦ Nem todas as WebViews terão a mesma renderização ◦ Versões diferentes de Android  WebKits sutilmente diferentes, etc. ◦ Performance ◦ Haverá um overhead de processamento em chamadas de interface ◦ Comportamento de Zoom e Scroll ◦ Podem conflitar entre o Zoom e Scroll nativos da aplicação VS do conteúdo Web. ◦ Complexidade ◦ Começa a misturar código Android com código Web ◦ Precisa ter infraestrutura online ou estrutura de projeto offline ◦ Segurança ◦ Cuidados com a exposição de códigos de interface Web - Android
  • 19. Atividade ◦ Crie uma aplicação Android Nativa com conteúdo nativo e WebView. ◦ WebView deverá ocupar a metade inferior da tela ◦ Na aplicação Android Nativa, faça uma estrutura com campos para inserção de nome e sobrenome, e um botão. ◦ Na página off-line em WebView, faça um form para inserção de nome e sobrenome, e um botão que irá chamar uma rotina JavaScript. ◦ O botão Update Native deverá atualizar os campos da página Web com o conteúdo digitado pelo usuário na aplicação Android nativa. ◦ O botão Update Web View deverá atualizar os campos da aplicação Android com o conteúdo digitado pelo usuário na webview.
  • 20. Observação ◦ Na chamada de interface JavaScript que fará a alteração de campos na aplicação Android, é recomendável utilizar um método tal como runOnUiThread para executar a operação. ◦ Caso contrário, não será possível alterar o conteúdo das Views desejadas. ◦ Exemplo: