From 3cb83e0eb5db07ce4c3feba9a19b8f9f674d357a Mon Sep 17 00:00:00 2001 From: Brandon Maxwell Date: Fri, 4 Mar 2016 17:33:59 -0800 Subject: Fixing missed call notifications for FBE + Our new components for creating missed call notifications are not marked as encryption aware so Telecom was always creating the missed call notification. + This CL marks the appropriate components as encryption aware so Telecom can check to see if we support putting up the notification. + Updated logic so missed call notifications only have 'callback' and 'message' actions when not locked. + Misc FBE cleanup + Since the call log is not available when on the File based encryption lock screen, dismissed notifications will not attempt to mark the calls as read; attempting do so causes exceptions. + Updated AOSP Dialer to ensure that we don't store data in device encrypted storage by default. This storage location is always available, regardless of whether we're in the FBE locked state or not. None of our preferences/databases need to be available in this state, so this change causes the Dialer to store data in credential encrypted storage by default. This storage location is only available when the device is unlocked. + Updated AOSP Dialer so it doesn't use device encrypted storage by default. This is because we currently don't want any of the preferences/databases stored by the Dialer to be available when FBE locked. + Updated AOSP Dialer so specific components must mark themselves as encryption aware, rather than having everything aware because the application is marked as such. Bug: 27455726 Change-Id: Ib5d28267116ec007bf9beb57862796235460ddf5 --- .../android/dialer/calllog/MissedCallNotifier.java | 38 ++++++++++++---------- 1 file changed, 21 insertions(+), 17 deletions(-) (limited to 'src/com/android/dialer/calllog/MissedCallNotifier.java') diff --git a/src/com/android/dialer/calllog/MissedCallNotifier.java b/src/com/android/dialer/calllog/MissedCallNotifier.java index c422dd58d..98d02d095 100644 --- a/src/com/android/dialer/calllog/MissedCallNotifier.java +++ b/src/com/android/dialer/calllog/MissedCallNotifier.java @@ -33,6 +33,7 @@ import com.android.dialer.DialtactsActivity; import com.android.dialer.R; import com.android.dialer.calllog.CallLogNotificationsHelper.NewCall; import com.android.dialer.contactinfo.ContactPhotoLoader; +import com.android.dialer.compat.UserManagerCompat; import com.android.dialer.list.ListsFragment; import com.android.dialer.util.DialerUtils; import com.android.dialer.util.IntentUtil; @@ -153,8 +154,8 @@ public class MissedCallNotifier { // sensitive notification information. .setPublicVersion(publicBuilder.build()); - // Add additional actions when there is only 1 missed call, like call-back and SMS. - if (count == 1) { + // Add additional actions when there is only 1 missed call and the user isn't locked + if (UserManagerCompat.isUserUnlocked(mContext) && count == 1) { if (!TextUtils.isEmpty(number) && !TextUtils.equals( number, mContext.getString(R.string.handle_restricted))) { @@ -181,21 +182,24 @@ public class MissedCallNotifier { AsyncTask.execute(new Runnable() { @Override public void run() { - // Clear the list of new missed calls from the call log. - ContentValues values = new ContentValues(); - values.put(Calls.NEW, 0); - values.put(Calls.IS_READ, 1); - StringBuilder where = new StringBuilder(); - where.append(Calls.NEW); - where.append(" = 1 AND "); - where.append(Calls.TYPE); - where.append(" = ?"); - try { - mContext.getContentResolver().update(Calls.CONTENT_URI, values, - where.toString(), new String[]{ Integer.toString(Calls. - MISSED_TYPE) }); - } catch (IllegalArgumentException e) { - Log.w(TAG, "ContactsProvider update command failed", e); + // Call log is only accessible when unlocked. If that's the case, clear the list of + // new missed calls from the call log. + if (UserManagerCompat.isUserUnlocked(mContext)) { + ContentValues values = new ContentValues(); + values.put(Calls.NEW, 0); + values.put(Calls.IS_READ, 1); + StringBuilder where = new StringBuilder(); + where.append(Calls.NEW); + where.append(" = 1 AND "); + where.append(Calls.TYPE); + where.append(" = ?"); + try { + mContext.getContentResolver().update(Calls.CONTENT_URI, values, + where.toString(), new String[]{Integer.toString(Calls. + MISSED_TYPE)}); + } catch (IllegalArgumentException e) { + Log.w(TAG, "ContactsProvider update command failed", e); + } } getNotificationMgr().cancel(NOTIFICATION_TAG, NOTIFICATION_ID); } -- cgit v1.2.3