|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Content Providers
Hola estoy probando un nuevo codigo para aprender a dominar los contents providers en concreto en este codigo estoy leyendo los numeros del telefono, la cuestion es que en el codigo de prueba que he copiado y pegado ya venia el TYPE y el NUMBER y hasta ahi funciona perfecto.
Pensando que lo entendia y para probar si era cierto he querido añadir la DURATION pero a pesar de que hago lo mismo que en TYPE y NUMBER no aparece la duracion. Alguien me puede explicar porque. Y si me pudierais explicar para que sirve el codigo tipo = cur.getInt(colTipo); telefono = cur.getString(colTelefono); duracion = cur.getString(colDuracion); no lo acabo de entender muy bien. Muchas gracias. Este es el codigo: Código:
import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.CallLog; import android.widget.TextView; public class MyActivity extends Activity { TextView txtResultados; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); txtResultados = (TextView)findViewById(R.id.tvResultado); //Creamos el array con los datos que queremos extraer String[] projection = new String[] { CallLog.Calls.TYPE, CallLog.Calls.NUMBER, CallLog.Calls.DURATION }; //Creamos el Uri Uri llamadasUri = CallLog.Calls.CONTENT_URI; ContentResolver cr = getContentResolver(); Cursor cur = cr.query(llamadasUri, projection, //Columnas a devolver null, //Condición de la query null, //Argumentos variables de la query null); //Orden de los resultados if (cur.moveToFirst()) { //Variable para controlar el tipo de llamada y el num de telf int tipo; String telefono; String duracion; //Variable para decir que tipo de llamada es String tipoLlamada = ""; // Obtenemos los índices de las columnas int colTipo = cur.getColumnIndex(CallLog.Calls.TYPE); int colTelefono = cur.getColumnIndex(CallLog.Calls.NUMBER); int colDuracion = cur.getColumnIndex(CallLog.Calls.DURATION); txtResultados.setText(""); do { //ASignamos el indice de las columnas a las variables tipo = cur.getInt(colTipo); telefono = cur.getString(colTelefono); duracion = cur.getString(colDuracion); //Dependiendo del tipo de calllog que sae un texto comprensible if(tipo == CallLog.Calls.INCOMING_TYPE) tipoLlamada = "ENTRADA"; else if(tipo == CallLog.Calls.OUTGOING_TYPE) tipoLlamada = "SALIDA"; else if(tipo == CallLog.Calls.MISSED_TYPE) tipoLlamada = "PERDIDA"; //Mostramos el resultado dentro de txtResultados txtResultados.append(tipoLlamada + " - " + telefono + duracion + "\n"); //Pasamos al siguiente dato } while (cur.moveToNext()); } } } |
|
#2
|
||||
|
||||
Código:
// Obtenemos los índices de las columnas int colTipo = cur.getColumnIndex(CallLog.Calls.TYPE); int colTelefono = cur.getColumnIndex(CallLog.Calls.NUMBER); int colDuracion = cur.getColumnIndex(CallLog.Calls.DURATION); CallLog.Calls.TYPE es una constante almacenada en la clase CallLog.Calls, y esa constante es un entero que indica en que columna se encuentra la informacion respectiva al TYPE de la llamada Lo mismo con las siguientes Al trabajar con una BD (Base de datos), ofrece un Cursor, un objeto mediante el cual te vas moviendo entre los resultados de la consulta a la BD Eso se hace en un bucle do-while, que en el while llama a la funcion cursor.moveToNext(), el cual pasa al siguiente resultado y devuelve un booleano que indica si hay siguiente resultado A la hora de recoger los datos: Código:
tipo = cur.getInt(colTipo); telefono = cur.getString(colTelefono); duracion = cur.getString(colDuracion); [variable] = cur.getTIPODEVARIABLE(columna) donde variable es la variable de destino donde almacenaras los datos del resultado cur es el objeto Cursor getTIPODEVARIABLE es una funcion que recibe como parametro la columna de la DB a mirar (la has guardado antes) Si no has trabajado antes con bases de datos, te recomiendo que le eches un ojo a su forma de trabajar (ya no con Android, sino en general), ya que te ayudara a comprender como funcionan ![]()
__________________
|
#3
|
||||
|
||||
Muchas gracias por tu tiempo y por tu información
![]() |