2011-11-03 6 views

答えて

5

最近の通話リストを取得するには、アンドロイドでCallLogを使用できます。 Hereは良いチュートリアルです。 Thisも役立ちます。

あなたはこのようにすべての発信通話のためにそれを使用することができます。

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

呼び出しのすべてのタイプのために、同じようにそれを使用します。

:いくつかの余分な、便利なコードで

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

こんにちはHiral、私は、コールログのすべてのタイプを取得するために同じクエリを使用していますが、それはデュアルSIMデバイスに来るとき私は1つのマイナーな問題を抱えています。私のコードは、デュアルSIMデバイスのために適切に動作していません。あなたは親切に私を助けてくれますか? – Scorpion

6

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; 
} 
関連する問題