2011-09-20 70 views

回答

0
public class MainActivity extends Activity 
{ 
TextView textView = null; 


int callcode; 
String callType ; 
String phNum; 
Date callDate; 
String callTypeCode; 
String strcallDate; 
String callDuration; 
String currElement; 
static boolean ring = false; 
static boolean callReceived = false; 


StringBuffer sb = new StringBuffer(); 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    textView = (TextView) findViewById(R.id.textview_call); 


       SmsManager sms = SmsManager.getDefault(); 
       String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 

       /* Query the CallLog Content Provider */ 
       @SuppressWarnings("deprecation") 
       Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null, 
         null, null, strOrder); 

       int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); 

       int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE); 

       int date = managedCursor.getColumnIndex(CallLog.Calls.DATE); 

       int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION); 

       sb.append("Call Log :"); 



       if(managedCursor.moveToFirst()) 
       { 
        String phNum = managedCursor.getString(number); 

        String callTypeCode = managedCursor.getString(type); 

        String strcallDate = managedCursor.getString(date); 

        Date callDate = new Date(Long.valueOf(strcallDate)); 

        String callDuration = managedCursor.getString(duration); 

        String callType = null; 

        int callcode = Integer.parseInt(callTypeCode); 

        switch (callcode) 
        { 
        case CallLog.Calls.OUTGOING_TYPE: 


         callType = "Outgoing"; 



         //sms.sendTextMessage(phNum, null, "Outgoing msg", null, null); 


         break; 
        case CallLog.Calls.INCOMING_TYPE: 

         callType = "Incoming"; 
         //sms.sendTextMessage(phNum, null, "Incoming msg", null, null); 


         break; 
        case CallLog.Calls.MISSED_TYPE: 

         callType = "Missed"; 
        //sms.sendTextMessage(phNum, null, "Missed msg", null, null); 

         break; 
        } 
        sb.append("\nPhone Number:--- " + phNum + " \nCall Type:--- " 
          + callType + " \nCall Date:--- " + callDate 
         + " \nCall duration in sec :--- " + callDuration); 
        sb.append("\n----------------------------------"); 
       } 


       managedCursor.close(); 
      textView.setText(sb); 

} 

}  
0

是啊。它的作品我:)試試這個。

private void getCallDetails() { 

    StringBuffer sb = new StringBuffer(); 
    Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null, null, null, null); 
    int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER); 
    int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE); 
    int date = managedCursor.getColumnIndex(CallLog.Calls.DATE); 
    int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION); 
    sb.append("Call Details :"); 
    while (managedCursor.moveToNext()) { 
     String phNumber = managedCursor.getString(number); 
     String callType = managedCursor.getString(type); 
     String callDate = managedCursor.getString(date); 
     Date callDayTime = new Date(Long.valueOf(callDate)); 
     String callDuration = managedCursor.getString(duration); 
     String dir = null; 
     int dircode = Integer.parseInt(callType); 
     switch (dircode) { 
      case CallLog.Calls.OUTGOING_TYPE: 
       dir = "OUTGOING"; 
       break; 

      case CallLog.Calls.INCOMING_TYPE: 
       dir = "INCOMING"; 
       break; 

      case CallLog.Calls.MISSED_TYPE: 
       dir = "MISSED"; 
       break; 
     } 
     sb.append("\nPhone Number:--- " + phNumber + " \nCall Type:--- " + dir + " \nCall Date:--- " + callDayTime + " \nCall duration in sec :--- " + callDuration); 
     sb.append("\n----------------------------------"); 
    } 
    managedCursor.close(); 
    miss_cal.setText(sb); 
} 
1

所有的答案在這裏使用managedQuery現在已不建議。應該用getContext().getContentResolver().query()方法替代,如here所述,並且演示here

這裏是一個簡短的示例代碼,基於這些例子:「這個網站/ URL已被封鎖按照從印度電信部指令」

String[] projection = new String[] { 
       CallLog.Calls.CACHED_NAME, 
       CallLog.Calls.NUMBER, 
       CallLog.Calls.TYPE, 
       CallLog.Calls.DATE 
     }; 
// String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 

Cursor cursor = mContext.getContentResolver().query(CallLog.Calls.CONTENT_URI, projection, null, null, null); 
while (cursor.moveToNext()) { 
    String name = cursor.getString(0); 
    String number = cursor.getString(1); 
    String type = cursor.getString(2); // https://developer.android.com/reference/android/provider/CallLog.Calls.html#TYPE 
    String time = cursor.getString(3); // epoch time - https://developer.android.com/reference/java/text/DateFormat.html#parse(java.lang.String 
    } 
cursor.close();