2011-11-03 24 views

Odpowiedz

5

Aby otrzymać listę ostatnich połączeń, możesz użyć CallLog w Androidzie. Here to dobry samouczek. Pomocne jest również This.

Można go używać dla wszystkich połączeń wychodzących, takich jak ten:

Cursor cursor = getContentResolver().query(android.provider.CallLog.Calls.CONTENT_URI,null, android.provider.CallLog.Calls.TYPE+"="+android.provider.CallLog.Calls.OUTGOING_TYPE, null,null); 

Dla wszystkich rodzajów połączeń, używać go jak:

Cursor cursor = getContentResolver().query(android.provider.CallLog.Calls.CONTENT_URI,null, null, null,null); 
+0

Witam Hiral, używam tego samego zapytania, aby uzyskać wszystkie typy dziennika połączeń, ale mam jeden mały problem, jeśli chodzi o podwójnym urządzeniu SIM. Mój kod nie działa poprawnie w przypadku urządzeń z dualem sim. Czy możesz miło mi pomóc w tym. – Scorpion

6

z kilku dodatkowych, przydatnych kodu:

getFavoriteContacts:

Map getFavoriteContacts(){ 
Map contactMap = new HashMap(); 

Uri queryUri = ContactsContract.Contacts.CONTENT_URI; 

String[] projection = new String[] { 
     ContactsContract.Contacts._ID, 
     ContactsContract.Contacts.DISPLAY_NAME, 
     ContactsContract.Contacts.STARRED}; 

String selection =ContactsContract.Contacts.STARRED + "='1'"; 

Cursor cursor = getContentResolver().query(queryUri, projection, selection,null,null); 


while (cursor.moveToNext()) { 
    String contactID = cursor.getString(cursor 
      .getColumnIndex(ContactsContract.Contacts._ID)); 

    Intent intent = new Intent(Intent.ACTION_VIEW); 
    Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, String.valueOf(contactID)); 
    intent.setData(uri); 
    String intentUriString = intent.toUri(0); 

    String title = (cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME))); 

    contactMap.put(title,intentUriString); 

} 
cursor.close(); 
return contactMap; 
} 

getRecentContacts:

Map getRecentContacts(){ 
Map contactMap = new HashMap(); 

Uri queryUri = android.provider.CallLog.Calls.CONTENT_URI; 

String[] projection = new String[] { 
     ContactsContract.Contacts._ID, 
     CallLog.Calls._ID, 
     CallLog.Calls.NUMBER, 
     CallLog.Calls.CACHED_NAME, 
     CallLog.Calls.DATE}; 

String sortOrder = String.format("%s limit 500 ", CallLog.Calls.DATE + " DESC"); 


Cursor cursor = getContentResolver().query(queryUri, projection, null,null,sortOrder); 


while (cursor.moveToNext()) { 
    String phoneNumber = cursor.getString(cursor 
      .getColumnIndex(CallLog.Calls.NUMBER)); 

    String title = (cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME))); 

    if(phoneNumber==null||title==null)continue; 

    String uri = "tel:" + phoneNumber ; 
    Intent intent = new Intent(Intent.ACTION_CALL); 
    intent.setData(Uri.parse(uri)); 
    String intentUriString = intent.toUri(0); 

    contactMap.put(title,intentUriString); 

} 
cursor.close(); 
return contactMap; 
} 
Powiązane problemy