En este video te explicamos en detalle todo el proceso para publicar una Aplicación Android…

Proyecto Android con Content Providers (II)
4.
Proyecto Android con Content Providers (II)
Continuamos presentando el código del proyecto ‘ProviderAndroid’ que comenzamos en la anterior publicación.
Tras haber detallado todas las clases del proyecto vamos en esta segunda parte a presentar todos los layouts con las vistas y elementos y componentes visuales de la Aplicación.
Al final de este tutorial, puedes descargar el código completo de todo[re el proyecto.
ProviderAndroid\res\layout\activity_main.xml
- Layout
activity_main.xml
, que define tres componentes de tipo Button para acceder a las diferentes Activities definidas en el proyecto:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061[...]<TableRowandroid:id="@+id/tableRow2"android:layout_width="wrap_content"android:layout_height="wrap_content" ><TableLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content" ><TableRowandroid:id="@+id/tableRow6"android:layout_width="wrap_content"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/btnRegistroLlamadas"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/registrollamadas"android:contentDescription="@string/registroLlamadas"android:onClick="mostrarRegistroLlamadas" /></TableRow><TableRowandroid:id="@+id/tableRow7"android:layout_width="wrap_content"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/btnAgenda"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/agenda"android:contentDescription="@string/contactos"android:onClick="mostrarContactos" /></TableRow><TableRowandroid:id="@+id/tableRow8"android:layout_width="wrap_content"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/btnSms"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/mensajes"android:contentDescription="@string/mensajesSMS"android:onClick="mostrarMensajesTexto" /></TableRow></TableLayout></TableRow>[...]
ProviderAndroid\res\layout\activity_registro_llamadas.xml
- Layout
activity_registro_llamadas.xml
, que entre sus varios elementos visuales, construye un componente de tipo ListView, encargado de mostrar el registro de llamadas, además de implementar dos componentes de tipo Button para eliminar y actualizar registros:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859[...]<TableRowandroid:id="@+id/tableRow3"android:layout_width="wrap_content"android:layout_height="wrap_content" ><ListViewandroid:id="@android:id/list"android:layout_width="match_parent"android:layout_height="224dp"android:layout_weight="0.29"android:background="@color/verde"android:cacheColorHint="@android:color/transparent"android:contentDescription="@string/logo"android:divider="@android:color/black"android:dividerHeight="3dp"android:scrollbarStyle="outsideOverlay"android:scrollbars="vertical|horizontal" ></ListView><TableLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content" ><TableRowandroid:id="@+id/tableRow5"android:layout_width="wrap_content"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/btnBorrarLlamadas"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/borrar"android:onClick="borrarLlamada" /></TableRow><TableRowandroid:id="@+id/tableRow6"android:layout_width="wrap_content"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/btnActualizarLlamadas"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/actualizar"android:onClick="actualizarLlamadas" /></TableRow></TableLayout></TableRow>[...]
ProviderAndroid\res\layout\activity_mensajes_texto.xml
- Layout
activity_mensajes_texto.xml
, que entre sus varios elementos visuales, construye un componente de tipo ListView, encargado de mostrar los mensajes de texto almacenados, además de implementar dos componentes de tipo Button para eliminar y actualizar los SMS:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172[...]<TableRowandroid:id="@+id/tableRow3"android:layout_width="wrap_content"android:layout_height="wrap_content" ><ListViewandroid:id="@android:id/list"android:layout_width="match_parent"android:layout_height="224dp"android:layout_weight="0.29"android:background="@color/rojo"android:cacheColorHint="@android:color/transparent"android:contentDescription="@string/logo"android:divider="@android:color/black"android:dividerHeight="3dp"android:scrollbarStyle="outsideOverlay"android:scrollbars="vertical|horizontal" ></ListView><EditTextandroid:id="@+id/edContenidoSMS"android:layout_width="wrap_content"android:layout_height="fill_parent"android:ems="10"android:enabled="false"android:inputType="textMultiLine"android:lines="4"android:maxLines="4"android:singleLine="false"android:text="@string/campoVacio"android:textAppearance="?android:attr/textAppearanceLarge" /><TableLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content" ><TableRowandroid:id="@+id/tableRow5"android:layout_width="wrap_content"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/btnBorrarSMS"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/borrar"android:onClick="borrarSMS" /></TableRow><TableRowandroid:id="@+id/tableRow6"android:layout_width="wrap_content"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/btnActualizarSMS"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/actualizar"android:onClick="actualizarSMS" /></TableRow></TableLayout></TableRow>[...]
ProviderAndroid\res\layout\activity_contactos_agenda.xml
- Layout
activity_contactos_agenda.xml
, que entre sus varios elementos visuales, construye un componente de tipo ListView, encargado de mostrar los contactos de la agenda, además de implementar dos componentes de tipo Button para eliminar y actualizar dichos contactos:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859[...]<TableRowandroid:id="@+id/tableRow3"android:layout_width="wrap_content"android:layout_height="wrap_content" ><ListViewandroid:id="@android:id/list"android:layout_width="match_parent"android:layout_height="224dp"android:layout_weight="0.29"android:background="@color/amarillo"android:cacheColorHint="@android:color/transparent"android:contentDescription="@string/logo"android:divider="@android:color/black"android:dividerHeight="3dp"android:scrollbarStyle="outsideOverlay"android:scrollbars="vertical|horizontal" ></ListView><TableLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content" ><TableRowandroid:id="@+id/tableRow5"android:layout_width="wrap_content"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/btnBorrarContacto"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/borrar"android:onClick="borrarContacto" /></TableRow><TableRowandroid:id="@+id/tableRow6"android:layout_width="wrap_content"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/btnActualizarContactos"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/actualizar"android:onClick="actualizarContactos" /></TableRow></TableLayout></TableRow>[...]
ProviderAndroid\res\layout\activity_adaptador_mensajes.xml
*Se utiliza este layout como ejemplo común para el resto de adaptadores definidos, ya que representa la misma estructura.
- Se define un layout denominado
activity_adaptador_mensajes.xml
, que construirá la vista de cada ítem del componente ListView listaMensajes. Define tres componentes de tipo TextView, que mostrarán tanto el tipo, como el número y la fecha de cada mensaje almacenado:
1234567891011121314151617181920212223242526272829[...]<TableRowandroid:id="@+id/tableRow1"android:layout_width="wrap_content"android:layout_height="wrap_content" ><TextViewandroid:id="@+id/txtTipoSMS"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/campoVacio" /><TextViewandroid:id="@+id/txtNumeroSMS"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/campoVacio" /><TextViewandroid:id="@+id/txtFechaSMS"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/campoVacio" /></TableRow>[...]
ProviderAndroid\res\layout\activity_adaptador_contactos.xml
- Se define un layout denominado
activity_adaptador_contactos.xml
, que construirá la vista de cada ítem del componente ListView listaContactos. Define tres componentes de tipo TextView, que mostrarán tanto el tipo, como los datos y el número de cada contacto almacenado:
1234567891011121314151617181920212223242526272829[...]<TableRowandroid:id="@+id/tableRow1"android:layout_width="wrap_content"android:layout_height="wrap_content" ><TextViewandroid:id="@+id/txtTipoContacto"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/campoVacio" /><TextViewandroid:id="@+id/txtDatosContacto"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/campoVacio" /><TextViewandroid:id="@+id/txtNumeroContacto"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/campoVacio" /></TableRow>[...]
ProviderAndroid\res\layout\activity_adaptador_llamadas.xml
- Se define un layout denominado
activity_adaptador_llamadas.xml
, que construirá la vista de cada ítem del componente ListView listaLlamadas. Define tres componentes de tipo TextView, que mostrarán tanto el tipo, como el número y la fecha de cada llamada registrada:
1234567891011121314151617181920212223242526272829[...]<TableRowandroid:id="@+id/tableRow1"android:layout_width="wrap_content"android:layout_height="wrap_content" ><TextViewandroid:id="@+id/txtTipo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/campoVacio" /><TextViewandroid:id="@+id/txtNumero"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/campoVacio" /><TextViewandroid:id="@+id/txtFecha"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/campoVacio" /></TableRow>[...]
ProviderAndroid\AndroidManifest.xml
- Por último, comentar brevemente los permisos declarados en el
AndroidManifest.xml
, para acceder a los datos asociados al registro de llamadas, mensajes de texto y agenda de contactos almacenados:
1234567891011121314151617181920212223<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.academiaandroid.providerandroid"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="21" />[...]<uses-permission android:name="android.permission.READ_CALL_LOG" /><uses-permission android:name="android.permission.READ_CONTACTS" /><uses-permission android:name="android.permission.READ_SMS" /><uses-permission android:name="android.permission.WRITE_CALL_LOG"/><uses-permission android:name="android.permission.WRITE_CONTACTS"/><uses-permission android:name="android.permission.WRITE_SMS"/>[...]</manifest>