如何在android中检索最近的通话清单和收藏夹列表?

pro*_*ack 5 android

我需要点击相应的按钮来调用最近的呼叫列表和最喜欢的呼叫列表,并且需要我自己的列表布局中的数据.我是Android的新手并且有很多麻烦.任何人请帮助我..提前谢谢..

Ode*_*ner 7

使用一些额外的有用代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)


Hir*_*ral 5

要获取最近的呼叫列表,您可以在android中使用CallLog.是一个很好的教程.也很有帮助.

您可以将它用于所有拨出电话,如下所示:

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

对于所有类型的呼叫,请使用它:

Cursor cursor = getContentResolver().query(android.provider.CallLog.Calls.CONTENT_URI,null, null, null,null);
Run Code Online (Sandbox Code Playgroud)