http://developer.android.com/reference/android/provider/CallLog.Calls.html
Tome un vistazo a esta clase CallLog
. Todo lo que necesita es consultar el teléfono para cualquier llamada y luego extraer la perdida (o hacer esto cuando está consultando el teléfono, en los argumentos de selección). Lo mismo aplica para los mensajes. Los SMS se almacenan en el proveedor de contenido bajo "content://sms/"
Luego solo obtenga el recuento de filas en el Cursor que devuelve la consulta. :)
Espero que esto ayude.
Editar: Para las llamadas perdidas:
String[] projection = { CallLog.Calls.CACHED_NAME, CallLog.Calls.CACHED_NUMBER_LABEL, CallLog.Calls.TYPE };
String where = CallLog.Calls.TYPE+"="+CallLog.Calls.MISSED_TYPE;
Cursor c = this.getContentResolver().query(CallLog.Calls.CONTENT_URI, selection,where, null, null);
c.moveToFirst();
Log.d("CALL", ""+c.getCount()); //do some other operation
if(c.getCount() == SOME_VALUE_TO_START_APP_ONE)//...etc etc
En la cláusula donde se establece la condición para la selección de datos. En nuestro caso, necesitamos todo lo que tipo es CallLog.Calls.MISSED_TYPE
. Seleccionamos el proyecto el nombre de la persona que llama y su número, por supuesto puede especificar más información para ser consultada como tipo de número como móvil, casa, trabajo. La expresión es equivalente a la consulta SQL, algo así como: SELECT CACHED_NAME, CACHED_NUMBER_LABEL, TYPE FROM CONTENT_URI WHERE TYPE=MISSED_TYPE
Esto requiere permisos que se añade a la Manifiesto
<uses-permission android:name="android.permission.READ_LOGS"></uses-permission>
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
Para consultar SMS ContentProvider
:
Uri sms_content = Uri.parse("content://sms");
Cursor c = this.getContentResolver().query(sms_content, null,null, null, null);
c.moveToFirst();
Log.d("SMS COUNT", ""+c.getCount()); //do some other operation
//Here proceed with the what you wanted
if(c.getCount() == SOME_VALUE_TO_START_APP_ONE)//...etc etc
se puede ir más profundo en el árbol de contenido como especificar el tipo de sms, como: content://sms/sent
o content://sms/inbox
y agregar proyección y selección para el segundo argumento del query()
método como, nombre, persona, estado del mensaje (como el ejemplo de llamadas).
Esto requiere permiso:
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
Gracias por la respuesta. ¿Me puede indicar algún tutorial? Apenas puedo entender la documentación porque soy un NooB real :( –
@MayuMayooresan Les proporcioné el ejemplo que escribí para ustedes. Espero que mi breve explicación sea lo suficientemente clara. Buena suerte. –
muchas gracias :) u rock :) –