2014-09-20 96 views
0

我想在android中使用getContentResolver()檢索通話記錄。android通話記錄ContentResolver

我收到以下錯誤

Cannot make a static reference to the non-static method getContentResolver() from the type ContextWrapper 

能否請您解釋一下我的this.I我剛剛啓動,與Android和Java。

public static void GetCalls() { 
    String[] CallDetails = { 
      android.provider.CallLog.Calls._ID, 
      android.provider.CallLog.Calls.CACHED_NAME, 
      android.provider.CallLog.Calls.NUMBER, 
      android.provider.CallLog.Calls.DATE, 
      android.provider.CallLog.Calls.DURATION, 
    }; 
    Cursor cursor; 

    cursor = getContentResolver().query(CallLog.CONTENT_URI, CallDetails, null, null,null);    
} 
+0

從方法中刪除靜態關鍵字 – SilentKiller 2014-09-20 09:35:12

回答

0

你有2種選擇:

  1. 讓你的方法非靜態,這樣你就可以使用getContentResolver()

  2. 傳遞一個context項目到您的方法,然後用context.getContentResolver()

希望它有幫助。

0
private static String getCallDetails(Context context) { 

    Cursor cursor = context.getContentResolver().query(CallLog.Calls.CONTENT_URI, 
      null, null, null, CallLog.Calls.DATE + " DESC"); 
    int number = cursor.getColumnIndex(CallLog.Calls.NUMBER); 
    int type = cursor.getColumnIndex(CallLog.Calls.TYPE); 
    int date = cursor.getColumnIndex(CallLog.Calls.DATE); 
    int duration = cursor.getColumnIndex(CallLog.Calls.DURATION);  
    while (cursor.moveToNext()) { 
     String phNumber = cursor.getString(number); 
     String callType = cursor.getString(type); 
     String callDate = cursor.getString(date); 
     Date callDayTime = new Date(Long.valueOf(callDate)); 
     String callDuration = cursor.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; 
     } 
    } 
    cursor.close(); 
    return stringBuffer.toString(); 
}`` 

Don't forget to add permission- 
<android:name="android.permission.READ_CALL_LOG"/> 

Hope this helps..