2015-09-29 28 views
5

コールが終了した後にコールログを読み込みます。コールが接続されている場合は、コールの継続時間が0より大きくなります。durationが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

あなたが活動を開くには、いくつかの遅延を与えることができ、あなたは突然の活動を開き、その時間内に現在のログが存在しないコールの後原因:

以下は、私のコードです。

関連する問題