Ecco un codice che può interrogare il registro delle chiamate per una chiamata persa. Fondamentalmente, dovrai attivarlo in qualche modo e assicurarti di fornire il registro delle chiamate un po 'di tempo (alcuni secondi dovrebbero farlo) per scrivere le informazioni altrimenti se controlli il registro delle chiamate troppo presto non troverai la chiamata più recente.
final String[] projection = null;
final String selection = null;
final String[] selectionArgs = null;
final String sortOrder = android.provider.CallLog.Calls.DATE + " DESC";
Cursor cursor = null;
try{
cursor = context.getContentResolver().query(
Uri.parse("content://call_log/calls"),
projection,
selection,
selectionArgs,
sortOrder);
while (cursor.moveToNext()) {
String callLogID = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls._ID));
String callNumber = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.NUMBER));
String callDate = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.DATE));
String callType = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.TYPE));
String isCallNew = cursor.getString(cursor.getColumnIndex(android.provider.CallLog.Calls.NEW));
if(Integer.parseInt(callType) == MISSED_CALL_TYPE && Integer.parseInt(isCallNew) > 0){
if (_debug) Log.v("Missed Call Found: " + callNumber);
}
}
}catch(Exception ex){
if (_debug) Log.e("ERROR: " + ex.toString());
}finally{
cursor.close();
}
Spero che questo sia utile.
fonte
2011-08-25 16:51:25
Come viene dichiarato MISSED_CALL_TYPE? – erdomester
MISSED_CALL_TYPE = android.provider.CallLog.Calls.MISSED_TYPE; - Scusa per aver lasciato quella parte. –
Grazie! Non potevo usarlo, quindi ho scoperto che esistono due modi per questi tipi di chiamata: 1. dichiararlo come intero: int typeColumn = c.getColumnIndex (android.provider.CallLog.Calls.TYPE) ;, quindi int callType = c.getInt (typeColumn); e dopo tutto, per es. se calltype == 1 allora .....2: use int outgoingtypeColumn = c.getColumnIndex (android.provider.CallLog.Calls.TYPE + "= '2'"); ecc. Spero che questo aiuti gli altri! – erdomester