Как читать журналы вызовов после завершения и сохранения в журналах?

Я читаю журналы вызовов после завершения вызова, в соответствии с этим, если вызов подключен, длительность звонка больше 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())); } 

Вы можете дать некоторую задержку для открытия активности, вызвать после вызова внезапное открытие активности и в течение этого времени нет текущего журнала.