2015-12-17 11 views
5

私は電話の通話記録を取得しようとしています。非推奨のManagedQuery()のために私はそれを得ることができません。私のニーズを満たすためにそれを修正する方法を手伝ってください。 managedQueryは、()は推奨されませんので推奨されていないManagedQuery()の通話ログの取得

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

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); 
    } 

は、残念ながら、コンパイラは、上の私の問題を示しています。

managedQuery()を使用せずにこのメソッドを書き直すにはどうすればよいですか?

+0

'しかし、廃止予定のManagedQuery()のために取得できませんでした.''それであなたは' ManagedQuery'文書を読みましたか?彼らは 'ManagedQuery'の代わりに何を使うべきかについて何か言いますか? – pskink

+0

はい、私はcursorLoaderの使用を提案しましたが、何も見つからなかったので、cursorLoaderを使用してコールログにア​​クセスするにはどうすればいいですか? – Sangeeta

+0

javadocs、ガイド、チュートリアルなどを読むために 'CursorLoader'を使います。 – pskink

答えて

1

あなたはそれをあなたのmanagedQueryを置き換えることができます。..応じ

 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

を文字列から、あなたのUIの更新を行います..私はここに私の答えを見つけた

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

:( – Sangeeta

+0

どのようなエラーが表示されますか –

関連する問題