2015-12-17 13 views
5

Mam metodę, w której próbuję uzyskać dzienniki połączeń z telefonu. ale z powodu przestarzałego ManagedQuery() nie jestem w stanie tego uzyskać. Pomóż, jak mogę to zmienić, aby spełnić moje potrzeby.Przestarzałe wydanie ManagedQuery() w uzyskiwaniu dzienników połączeń

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 Log :"); 
     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(); 
     textView.setText(sb); 
    } 

Niestety kompilator mi pokazać problem na:

Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null,  null, null, null); 

Ponieważ managedQuery() jest przestarzała.

Jak mogę przepisać tę metodę bez użycia managedQuery()?

+0

'ale z powodu przestarzałego ManagedQuery() nie mogę tego zdobyć. Czyli przeczytałeś dokumentację" ManagedQuery'? czy mówią coś o tym, co używać zamiast "ManagedQuery"? – pskink

+0

Tak, sugerowali używać cursorLoader, ale nie znalazłem nic, jak mogę uzyskać dostęp do dzienników połączeń za pomocą cursorLoader – Sangeeta

+0

, więc użyj 'CursorLoader' przeczytać javadocs, przewodniki, tutoriale itp. – pskink

Odpowiedz

1

Wykonać aktualizację UI z Odpowiednio strun ..

 String[] details = new String[]{CallLog.Calls.NUMBER, 
        CallLog.Calls.TYPE, 
        CallLog.Calls.DURATION, 
        CallLog.Calls.CACHED_NAME, 
        CallLog.Calls._ID}; 

      Cursor cursor; 

      cursor = context.getContentResolver().query(CallLog.Calls.CONTENT_URI, details, null, null, CallLog.Calls._ID + " DESC"); 
      if(cursor.getCount()!=0){ 
       cursor.moveToFirst(); 
       String number = cursor.getString(0); 
       String type=cursor.getString(1); 
       String duration=cursor.getString(2); 
       String name=cursor.getString(3); 
       String id=cursor.getString(4); 
       String dir = null; 



       switch (Integer.parseInt(type)) { 
        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(); 
2

Można wymienić managedQuery z nim:

Cursor managedCursor = getContentResolver().query(
       CallLog.Calls.CONTENT_URI, null, null, null, null); 
+0

nie działa dla mnie. :( – Sangeeta

+0

Jaki błąd to pokazuje –