summaryrefslogtreecommitdiff
path: root/src/com/android/dialer/calllog
diff options
context:
space:
mode:
authorSarmad Hashmi <mhashmi@google.com>2016-02-10 17:41:12 -0800
committerSarmad Hashmi <mhashmi@google.com>2016-02-10 21:33:12 -0800
commit6f3016d9065564bf09a5759f16563a05abbe105d (patch)
tree5b7033939f7a16779b57b47850a3d822de4a236b /src/com/android/dialer/calllog
parent7f345a2352465c98cc4ad5a89a02eb41fbdce843 (diff)
Fix bug where 00:00 duration is shown for voicemails without a duration.
Instead of showing a 00:00 duration, nothing is displayed. When the content is loaded, the duration field for the call log entry associated with the voicemail is updated with the duration fetched from the mediaplayer. The proper duration is then displayed in MM:SS format. BUG=24175525 Change-Id: I1cafebae4fcbc749f573accfcf8833b598675f0b
Diffstat (limited to 'src/com/android/dialer/calllog')
-rw-r--r--src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java28
-rw-r--r--src/com/android/dialer/calllog/PhoneCallDetailsHelper.java2
2 files changed, 29 insertions, 1 deletions
diff --git a/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java b/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
index d73159c7a..5c92639b1 100644
--- a/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
+++ b/src/com/android/dialer/calllog/CallLogAsyncTaskUtil.java
@@ -54,6 +54,7 @@ public class CallLogAsyncTaskUtil {
MARK_VOICEMAIL_READ,
MARK_CALL_READ,
GET_CALL_DETAILS,
+ UPDATE_DURATION
}
private static final class CallDetailQuery {
@@ -414,6 +415,33 @@ public class CallLogAsyncTaskUtil {
});
}
+
+ /**
+ * Updates the duration of a voicemail call log entry.
+ */
+ public static void updateVoicemailDuration(
+ final Context context,
+ final Uri voicemailUri,
+ final int duration) {
+ if (!PermissionsUtil.hasPhonePermissions(context)) {
+ return;
+ }
+
+ if (sAsyncTaskExecutor == null) {
+ initTaskExecutor();
+ }
+
+ sAsyncTaskExecutor.submit(Tasks.UPDATE_DURATION, new AsyncTask<Void, Void, Void>() {
+ @Override
+ public Void doInBackground(Void... params) {
+ ContentValues values = new ContentValues(1);
+ values.put(CallLog.Calls.DURATION, duration);
+ context.getContentResolver().update(voicemailUri, values, null, null);
+ return null;
+ }
+ });
+ }
+
@VisibleForTesting
public static void resetForTest() {
sAsyncTaskExecutor = null;
diff --git a/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java b/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java
index be02e4c1b..7b149e24e 100644
--- a/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java
+++ b/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java
@@ -326,7 +326,7 @@ public class PhoneCallDetailsHelper {
text = dateText;
}
- if (details.callTypes[0] == Calls.VOICEMAIL_TYPE) {
+ if (details.callTypes[0] == Calls.VOICEMAIL_TYPE && details.duration > 0) {
views.callLocationAndDate.setText(mResources.getString(
R.string.voicemailCallLogDateTimeFormatWithDuration, text,
getVoicemailDuration(details)));