Primeiro criamos uma tela com duas caixas de texto e dois botões. O primeiro para a digitação da URL que será mostrada no browser e o segundo para abrir a tela de enviar email com o destinatário já preenchido.
O objetivo com este post é aprender um pouco mais da utilidade da Intent e mostrar que o Android permite que a chamada de serviços do celular.
Xml da Tela:
Do xml destaco a propriedade hint onde você coloca o texto que ficará no EditText antes do usuário digitar. destaco também a propriedade inputType onde setei o campo do email para este tipo para que o teclado ficasse com o @ já presente.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Digite a URL"
android:textSize="30sp"
android:id="@+id/edtUrl" />
<Button android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Browser"
android:layout_gravity="center_vertical"
android:id="@+id/btnBrowser"
/>
<EditText android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="Digite o Destinatário"
android:textSize="30sp"
android:ems="10"
android:id="@+id/edtEmail" />
<Button android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="E-mail"
android:layout_gravity="center_vertical"
android:id="@+id/btnEmail"
/>
</LinearLayout>
Código Java:
package br.com.nav.blog; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText edtUrl; private EditText edtEmail; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Tratando os botões da tela:Button btnBrowser = (Button) findViewById(R.id.btnBrowser); btnBrowser.setOnClickListener(this); Button btnEmail = (Button) findViewById(R.id.btnEmail); btnEmail.setOnClickListener(this); //Tratando as caixas de texto da telaedtUrl = (EditText) findViewById(R.id.edtUrl); edtEmail = (EditText) findViewById(R.id.edtEmail); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnBrowser: Uri uri = Uri.parse(edtUrl.getText().toString()); Intent intent = new Intent(Intent.ACTION_VIEW, uri); try { startActivity(intent); } catch (Exception erro) { Toast.makeText(this,"Browser Não disponível/Endereço incorreto",Toast.LENGTH_SHORT).show(); } break; case R.id.btnEmail: Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts( "mailto",edtEmail.getText().toString(), null)); startActivity(Intent.createChooser(emailIntent, "Send email...")); break; } } }
Chamando o browser:
Primeiro é preciso gerar uma Uri. No caso pego o endereço web do edtUrl, digitado pelo usuário. Para isto utilizo a classe Uri e passo a mesma no construtor da Intent. A constante ACTION_VIEW é necessária para indicar que uma ação será executada.
Agora basta chamar o método StartActivity.
Para evitar mensagem de erro do celular, caso se digite um endereço errado, coloquei o trecho num try catch e capturei o erro utilizando para mostrar uma mensagem a classe Toast. Detalhe: Se você digitar, neste exemplo, uma página válida mas sem o http ele falhará.
Criando um email:
Para o email o código muda um pouco. Aqui coloquei a constante ACTION_SENDTO e crio uma uri contendo o destinatário, digitado na tela, "mail to". Para iniciar o email lançamos a opção de escolha dos aplicativos de email que houver.
Bom, espero ter ajudado.
Até a próxima!
Nenhum comentário:
Postar um comentário