DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

Android - Criação de um Navegador Web

Neste pequeno artigo, será ensinado como criar seu próprio navegador web para Android.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?

Atualmente, o uso de dispositivos móveis vem aumentando cada vez mais e, por isso, foi necessário criar um sistema operacional que se adapte a esta situação, então o Android entrou em cena e se popularizou rapidamente. Com isso, esses dispositivos passaram a ter como função principal não mais a realização de ligações telefônicas e sim o acesso à Internet e redes sociais. Diante disso, a programação mobile vem crescendo cada vez mais e por este motivo criei esse artigo que ensina um pouco sobre ela. Aqui foi utilizado o Android 3.1, mas o conceito se aplica em todas as versões da plataforma.

Começando, abra o Eclipse, crie um novo projeto Android, selecione a versão de sua preferência. Despois disto, iremos configurar nosso Layout da seguinte forma:

Listagem 1: Layout da primeira página

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <ImageButton
                android:id="@+id/voltar"
                android:layout_width="45dp"
                android:layout_height="45dp"
                android:src="@drawable/back" />

            <ImageButton
                android:id="@+id/avancar"
                android:layout_width="45dp"
                android:layout_height="45dp"
                android:src="@drawable/front" />

            <ImageButton
                android:id="@+id/atualizar"
                android:layout_width="45dp"
                android:layout_height="45dp"
                android:src="@drawable/ref" />

            <EditText
                android:id="@+id/url"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10" />

            <ImageButton
                android:id="@+id/ir"
                android:layout_width="45dp"
                android:layout_height="45dp"
                android:src="@drawable/ir" />

        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.35"
        android:orientation="vertical" >

        <WebView
            android:id="@+id/pagina"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>

</LinearLayout>

Nessa nossa interface usei o ImageButton ao invés do Button para poder adicionar imagens nos botões e torna-los mais parecidos com um navegador web.

Depois de ter feito isso, nós vamos começar a codificar nosso projeto. Acesse sua classe principal e em seguida crie variáveis do tipo ImageButton, EditText e WebView, conforme a Listagem 2, e relacione-as aos componentes que criamos na interface com o XML.

Listagem 2: Definindo as variáveis no código

public class NavegadorwebActivity extends Activity {
     /** Called when the activity is first created. */

     @Override

     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

         setContentView(R.layout.main);         

         ImageButton voltar = (ImageButton)findViewById(R.id.voltar);

         ImageButton avancar = (ImageButton)findViewById(R.id.avancar);

         ImageButton atualizar = (ImageButton)findViewById(R.id.atualizar);

         ImageButton ir = (ImageButton)findViewById(R.id.ir);

         final EditText url = (EditText)findViewById(R.id.url);

         final WebView pagina = (WebView)findViewById(R.id.pagina);

Para que nosso Browser inicie e já carregue uma página, escreva o seguinte código:

Listagem 3: Inicializando uma página no browser

//Habilita o JavaScript nas paginas web
pagina.getSettings().setJavaScriptEnabled(true);

//Habilita o zoom nas páginas
pagina.getSettings().setSupportZoom(true);

//Joga uma uma url no EditText
url.setText("http://www.google.com");

//fará o browser carregar a pagina de acordo com o Texto no EditText
pagina.loadUrl(url.getText().toString());

Bom, até o momento nosso Browser irá iniciar e carregar a URL do Google, mas precisamos definir os eventos para os ImageButtons para que possamos manipular nossa navegação. Vamos criar primeiramente para o ImageButton voltar. O código ficaria assim:

Listagem 4: Código do botão Voltar

      
voltar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//verifica se é possivel voltar e se possivel ele irá
 redirecionar o Browser a pagina anterior
if(pagina.canGoBack()){
                   		pagina.goBack();
}
}
});

O mesmo procedimento é aplicado para o ImageButton Avançar:

Listagem 5: Código do botão Avançar

avancar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Verifica se é possível avançar. Em caso positivo, irá redirecionar o Browser para a página posterior
if (pagina.canGoForward()){
                          pagina.goForward();
}
}  
});

O código logo abaixo irá atualizar a pagina atual:

Listagem 6:

Atualizando a página atual
atualizar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Recarrega a página
pagina.reload();
}
});

Por ultimo, e mais importante, temos o evento do ImageButton Ir. É ele que irá acionar o carregamento das paginas de acordo com o endereço digitado no EditText.

Listagem 7: Código do botão Ir

ir.setOnClickListener(new View.OnClickListener() {
         @Override
public void onClick(View v) {
//carrega o brownser de acordo com a url digitada no EditText
pagina.loadUrl(url.getText().toString());
}
});

Ainda não terminamos, há algo de extrema importância que garante o funcionamento do nosso navegador e garante que ele acesse a internet. É preciso adicionar permissão de acesso à internet. No arquivo AndroidManifest.xml, insira a seguinte linha:

Listagem 8: Permitindo o acesso à internet pela aplicação

<uses-permission android:name="android.permission.INTERNET"/>

E com isso finalizamos nossa aplicação. Basta executar o projeto e vê-lo funcionar.


Rodrigo Da Silva - Fatec Zl
Ensino Fundamental e Médio Completo Pelo Colégio da Policia Militar - Unid. Vila Talarico. Técnico em informática pela ETEC de Vila Formosa Atualmente cursando Analise e Desenvovimento de Sistemas na Fatec Zona Leste. Trabalhou Planeta PC Computadores(2010/2012) em Suporte Tecnico. Atualmente ...
O que você achou deste post?

    4 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Ligia Moreno
Otimo post, Rodrigo!!!

É um pouco dificil achar conteudo de Android... Essa seria uma boa 1º aplicação em Adroid!!! xD

Gostei
[há +1 ano] - Responder

 

John Ramos
Prezado, gostei muito do seu post, foi direto e consegui concluí-lo rapidamente. Parabéns!
Porém, ao executar o projeto, ele não abriu dentro do app(WebView) como imaginei, e sim, chamou um browser e abriu o site fora da aplicação. O que pode ter ocorrido?
[há 28 dias] - Responder

 

Diogo Souza
Olá Jhon, esse erro geralmente acontece quando você não seta o cliente webView no código:

lWebView.setWebViewClient(new WebViewClient());

Veja: http://developer.android.com/guide/webapps/webview.html
[há 28 dias] - Responder
 

John Ramos
Diogo, foi isso mesmo, funcionou perfeitamente. Muito obrigado!
[há 25 dias] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
[Fechar] Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03