Intent implícito: Aplicación que realiza una llamada telefónica en Android

Intent implícito: Aplicación que realiza una llamada telefónica en Android

Crea tu propia aplicación que hace uso del teléfono en Android, y aprende a utilizar un intent implícito en Android, hacer uso de permisos en tu aplicación móvil, y diferenciar entre versiones de Android.

Intent implícito: Aplicación que realiza una llamada telefónica en Android

Un intent implícito es una acción que invoca cualquier aplicación que el dispositivo puede utilizar para realizar una determinada función. Por ejemplo, no es necesario crear código propio para hacer una llamada telefónica, en vista de que Android tiene ya una aplicación para el Teléfono. En vez de eso, podemos enviar la orden de abrir la aplicación teléfono y pasarle el número que desamos marcar, considerando que el usuario puede o no dar permiso para utilizar la app del teléfono.

Vamos a realizar lo siguiente:

  1. Crear una interfaz de usuario donde se ingrese un número telefónico y se pulse un botón para hacer la llamada.
  2. Codificar una función de escucha para saber cuándo fue pulsado el botón.
  3. Determinar la versión de Android (esto es necesario pues en versiones nuevas hay cambios en la forma de autorizar a la aplicación el uso de la app de teléfono).
  4. Crear un intent de llamada telefónica.
  5. Determinar si el usuario ha autorizado el uso de la app de teléfono.
  6. Ejecutar el intent.

Esta es la interfaz que deseamos realizar:

Interfaz para la aplicación que ejecuta un intent implícito en Android

Interfaz para la aplicación que ejecuta un intent implícito en Android

Para esto creamos un nuevo Activity en blanco. Yo lo he nombrado ThirdActivity, por lo que dispongo del archivo activity_third.xml en el que he trabajado el siguiente código:

Note lo siguiente:

  1. Utilizo un EditText con un inputType=“phone”, lo que permite al usuario utilizar el teclado numérico para teclear un número telefónico. Su id es editTextPhone.
  2. Utilizo un ImageButton al que le he colocado la imagen de un teléfono usando src=“@drawable/phone” (debe existir un archivo phone.png en la carpeta drawable. El id de este botón es imageButtonPhone.
  3. Creo otros componentes que utilizaré más adelante.

En mi archivo ThirdActivity.java utilizo el siguiente código:

 

Aquí se realiza lo siguiente:

  1. Enlazamos los componentes de interfaz gráfica xml con objetos de Java: 

 editTextPhone = (EditText) findViewById(R.id.editTextPhone);

editTextWeb = (EditText) findViewById(R.id.editTextWeb);

imgBtnPhone = (ImageButton) findViewById(R.id.imageButtonPhone);

imgBtnWeb = (ImageButton) findViewById(R.id.imageButtonWeb);

imgBtnCamera = (ImageButton) findViewById(R.id.imageButtonCamera);

2. Leemos el número telefónico y determinamos si está vacío:

 String phoneNumber = editTextPhone.getText().toString();

       if (phoneNumber != null){

3. Determinamos la versión de Android que utiliza el usuario y de acuerdo a eso llamamos una función u otra.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, TEL_COD); } else{ OlderVersions(phoneNumber); }

4. Para versiones nuevas vemos si la aplicación cuenta con el permiso para usar el teléfono: 

  if (permisos.equals(Manifest.permission.CALL_PHONE)){

5. Para esto en el archivo AndroidManifest.xml deben existir las siguientes lineas de código:

 <uses-permission android:name=”android.permission.CALL_PHONE” />

 <uses-feature android:name=”android.hardware.telephony” android:required=”false” />

6. Si el permiso existe, crea un intent para hacer una llamada telefónica, pasando como parámetro el número que el usuario escribió. 

if (result == PackageManager.PERMISSION_GRANTED){

                        String phoneNumber = editTextPhone.getText().toString();

                        Intent intentCall = new Intent(Intent.ACTION_CALL, Uri.parse(“tel:”+phoneNumber));

7. Comprueba nuevamente si el usuario dio permiso y en tal caso, realiza el intent ejecutando la llamada al número solicitado.

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED) return;

                           startActivity(intentCall);

7. Para versiones más antiguas, el programa únicamente determina si la aplicación tiene permiso de hacer uso de la app de teléfono, en cuyo caso, realiza la llamada.

int result = checkCallingOrSelfPermission(Manifest.permission.CALL_PHONE);

                if ( result == PackageManager.PERMISSION_GRANTED){

                startActivity(intentCall);}

 

Nuestra app debe realizar lo siguiente:

App que realiza un intent implícito

App que realiza un intent implícito

 

Referencias

  1. Android.com (2018). Intents y filtros de intents. Disponible en [https://developer.android.com/guide/components/intents-filters?hl=es-419]

Tags, ,

Abrir un Activity en Android pasando datos

Veamos cómo abrir un Activity en Android y cómo pasar un dato de tipo String reutilizandolo en su interfaz de usuario.

Leer más…

Tags, ,

Agregar funcionalidad a un Button en Android

Una de las primeras nociones de programación móvil es agregar funcionalidad a un Button en Android. Veamos los pasos para realizarse.

Leer más…

Tags,

Aprende a trabajar con Android Studio

En éste artículo vemos cómo trabajar con Android Studio, lo que necesitas para operarlo, su instalación, cómo crear un proyecto y cómo crear un AVD, entre otras cosas.

Leer más…

Tags, ,

Características de Android: antecedentes de la plataforma

Analizaremos los antecedentes, así como las características de Android que han hecho de esta plataforma una de las más utilizadas por los usuarios de aplicaciones móviles.

Leer más…

Tags, ,

Normalizar CSS con normalize y compatibilizar navegadores con modernizr

¿Qué es normalizar CSS? ¿Por qué es importante? En esta entrada aprenderemos a descargar y utilizar Normalize. Además veremos su diferencia con Modernizr.

Leer más…

Tags, ,

CSS en 1 minuto: introducción a las hojas de estilo en cascada

¿Qué es CSS? ¿Cuál es su sintaxis? ¿Cómo dar estilos a un HTML? ¿Cómo se escriben comentarios en CSS? Mira a continuación un ejemplo en 1 minuto.

Leer más…

Tags, ,

Simulación en Python usando Simpy: llegadas y servicio

Realizaremos una simulación en Python usando Simpy de eventos discretos (simulación de llegadas y servicio). 

Leer más…

Tags, ,

Estrategias para resolver problemas

Las siguientes estrategias para resolver problemas son útiles ya seas que tengas que aplicar fórmulas matemáticas o hacer un programa en un lenguaje de programación, o resolver cualquier otro tipo de problema.

Leer más…

Tags, ,

Cómo obtener información del sistema en Linux

Aprenderemos cómo obtener información del sistema en Linux: cómo saber la versión de Linux que estamos utilizando, cómo saber qué distribución y qué versión utilizamos, y si es a 32 bits o 64 bits.

Leer más…

Tags, ,