diff options
| author | 2015-08-04 13:23:03 -0700 | |
|---|---|---|
| committer | 2015-08-04 14:10:49 -0700 | |
| commit | 78b8d4aa99ce866caacf291a446837416fa07bd7 (patch) | |
| tree | 1d6ebc41a32f657259f8138bd8c04f4d7db458c8 | |
| parent | fc5a4bf0e1520bf3acd75226d760b8e1d7cdd59f (diff) | |
Mark missed calls as read in calllog restore(2/2)
When missed calls are restored by CalllogBackupAgent using the addCall
API of CallLog provider, we were setting the IS_READ flag to 0 which
resulted in user getting a missed call notifications for all missed
calls after restore.
Adding a new addCall API signature which can specify the value to be put in the
IS_READ field when a call is added to the calllog provider. This will be
used by the CallLogBackupAgent to mark all restored missed calls as
read.
BUG: 22908952
Change-Id: Iee3bea09fbdefef09c7eb6c6c61728cb4d94d9e7
| -rw-r--r-- | core/java/android/provider/CallLog.java | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/core/java/android/provider/CallLog.java b/core/java/android/provider/CallLog.java index 23555d6d998d..4f880b1275e4 100644 --- a/core/java/android/provider/CallLog.java +++ b/core/java/android/provider/CallLog.java @@ -421,7 +421,7 @@ public class CallLog { int presentation, int callType, int features, PhoneAccountHandle accountHandle, long start, int duration, Long dataUsage) { return addCall(ci, context, number, presentation, callType, features, accountHandle, - start, duration, dataUsage, false); + start, duration, dataUsage, false, false); } @@ -450,8 +450,41 @@ public class CallLog { * {@hide} */ public static Uri addCall(CallerInfo ci, Context context, String number, + int presentation, int callType, int features, PhoneAccountHandle accountHandle, + long start, int duration, Long dataUsage, boolean addForAllUsers) { + return addCall(ci, context, number, presentation, callType, features, accountHandle, + start, duration, dataUsage, addForAllUsers, false); + } + + /** + * Adds a call to the call log. + * + * @param ci the CallerInfo object to get the target contact from. Can be null + * if the contact is unknown. + * @param context the context used to get the ContentResolver + * @param number the phone number to be added to the calls db + * @param presentation enum value from PhoneConstants.PRESENTATION_xxx, which + * is set by the network and denotes the number presenting rules for + * "allowed", "payphone", "restricted" or "unknown" + * @param callType enumerated values for "incoming", "outgoing", or "missed" + * @param features features of the call (e.g. Video). + * @param accountHandle The accountHandle object identifying the provider of the call + * @param start time stamp for the call in milliseconds + * @param duration call duration in seconds + * @param dataUsage data usage for the call in bytes, null if data usage was not tracked for + * the call. + * @param addForAllUsers If true, the call is added to the call log of all currently + * running users. The caller must have the MANAGE_USERS permission if this is true. + * @param is_read Flag to show if the missed call log has been read by the user or not. + * Used for call log restore of missed calls. + * + * @result The URI of the call log entry belonging to the user that made or received this + * call. + * {@hide} + */ + public static Uri addCall(CallerInfo ci, Context context, String number, int presentation, int callType, int features, PhoneAccountHandle accountHandle, - long start, int duration, Long dataUsage, boolean addForAllUsers) { + long start, int duration, Long dataUsage, boolean addForAllUsers, boolean is_read) { final ContentResolver resolver = context.getContentResolver(); int numberPresentation = PRESENTATION_ALLOWED; @@ -516,7 +549,7 @@ public class CallLog { values.put(NEW, Integer.valueOf(1)); if (callType == MISSED_TYPE) { - values.put(IS_READ, Integer.valueOf(0)); + values.put(IS_READ, Integer.valueOf(is_read ? 1 : 0)); } if ((ci != null) && (ci.contactIdOrZero > 0)) { |