2015-09-29 8 views
5

मैं कॉल खत्म होने के बाद कॉल लॉग पढ़ रहा हूं, अगर कॉल कनेक्ट है तो कॉल अवधि 0 से अधिक है। यदि अवधि 0 से अधिक है, तो मैं 2 दिनों के बाद उस नंबर पर अगली कॉल शेड्यूल करता हूं। यदि कॉल अवधि 0 है तो मैं 1 दिन के बाद उस नंबर पर अगली कॉल शेड्यूल करता हूं।कॉल समाप्त होने और लॉग में संग्रहीत करने के बाद कॉल लॉग कैसे पढ़ा जाए?

मेरी समस्या यह है कि जब कॉल कनेक्ट होता है तो यह सही ढंग से निर्धारित होता है, लेकिन जब कॉल कनेक्ट नहीं होता है तो पिछला पाठ दिखाता है। कभी-कभी यह सही होता है और कभी-कभी सही नहीं होता है।

मैं इस गतिविधि को रिसीवर से खोलता हूं। कृपया बेहतर समाधान प्रदान करें।

@Override 
protected void onResume() { 
    /** 
     * this values only set when call maked from app then it w 
     * ill set auto filled some of filled in follow up 
     * 
     */ 
    if(flag!=null && flag.equalsIgnoreCase("Followup")/*&& state!=true*/){ 
     if(SharedPrefs.getBoolean(this, SharedPrefs.PREFS_AUTH, SharedPrefs. 
      KEY_SCHEDULE_NEXT_FOLLOWUP, false)) 
      { 
      findViewById(R.id.rl_followUp).setVisibility(View.VISIBLE); 
      } else { 
      findViewById(R.id.rl_followUp).setVisibility(View.GONE); 
      } 
     getCallDetails(); 

     /* 
     String strDateFormat = "hh:mm a"; 
     SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); 
     calendar=Calendar.getInstance(); 
     */ 
     if(callDuration > 0){ 
      tvDateText.setText(timeInMilies(2)); 
      etFUComments.setText("Call is done"); 
     } else { 
      tvDateText.setText(timeInMilies(1)); 
      etFUComments.setText(getResources(). 
       getString(R.string.call_not_connected_detail)); 
     } 
    } 
    super.onResume(); 
} 

private void getCallDetails() { 
    StringBuffer sb = new StringBuffer(); 
    String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 
    /* Query the CallLog Content Provider */ 
    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); 
    duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION); 
    sb.append("Call Log :"); 
    if (managedCursor.moveToNext()) { 
     phNum = managedCursor.getString(number); 
     String callTypeCode = managedCursor.getString(type); 
     String strcallDate = managedCursor.getString(date); 
     callDate = new Date(Long.valueOf(strcallDate)); 
     callDuration =Integer.parseInt(managedCursor.getString(duration)); 
     String callType = null; 
     int callcode = Integer.parseInt(callTypeCode); 
     switch (callcode) { 
      case CallLog.Calls.OUTGOING_TYPE: 
       callType = "Outgoing"; 
       break; 
      case CallLog.Calls.INCOMING_TYPE: 
       callType = "Incoming"; 
       break; 
      case CallLog.Calls.MISSED_TYPE: 
       callType = "Missed"; 
       break; 
     } 
    } 
    managedCursor.close(); 
} 


public String timeInMilies(int day){ 
    Date date=new Date();//(86400000*2) 
    long time= date.getTime(); 
    DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(time + (86400000 * day)); 
    //etFUComments.setText(String.valueOf(formatter.format(calendar.getTime()))); 
    return String.valueOf(formatter.format(calendar.getTime())); 
} 
+0

धन्यवाद @mergenchik !! –

उत्तर

0

आप गतिविधि को खोलने के लिए कुछ विलंब दे सकते हैं, कॉल के बाद आप अचानक गतिविधि खोलने के लिए और उस समय के भीतर वहाँ वर्तमान लॉग नहीं है कारण:

के बाद मेरी कोड है।

संबंधित मुद्दे