Merge "Fixing missed call notifications for FBE" into nyc-dev
am: bb293bfd56

* commit 'bb293bfd56125febe42ddef5cdcb630abf1b12c9':
  Fixing missed call notifications for FBE
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c02d0f5..c39bd5b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -69,8 +69,7 @@
         android:supportsRtl="true"
         android:backupAgent='com.android.dialer.DialerBackupAgent'
         android:usesCleartextTraffic="false"
-        android:forceDeviceEncrypted="true"
-        android:encryptionAware="true">
+        android:forceDeviceEncrypted="false">
 
         <meta-data android:name="com.google.android.backup.api_key"
             android:value="AEdPqrEAAAAIBXgtCEKQ6W0PXVnW-ZVia2KmlV2AxsTw3GjAeQ" />
@@ -86,6 +85,7 @@
             android:icon="@mipmap/ic_launcher_phone"
             android:windowSoftInputMode="stateAlwaysHidden|adjustNothing"
             android:resizeableActivity="true"
+            android:encryptionAware="true"
             >
             <intent-filter>
                 <action android:name="android.intent.action.DIAL" />
@@ -281,10 +281,12 @@
 
         <service
             android:name=".calllog.CallLogNotificationsService"
+            android:encryptionAware="true"
             android:exported="false"
         />
 
-        <receiver android:name=".calllog.MissedCallNotificationReceiver">
+        <receiver android:name=".calllog.MissedCallNotificationReceiver"
+            android:encryptionAware="true">
             <intent-filter>
                 <action android:name="android.telecom.action.SHOW_MISSED_CALLS_NOTIFICATION" />
             </intent-filter>
@@ -318,11 +320,6 @@
                   android:resizeableActivity="true">
         </activity>
 
-        <!-- BroadcastReceiver for receiving Intents from Notification mechanism. -->
-        <receiver android:name="com.android.incallui.NotificationBroadcastReceiver"
-                  android:encryptionAware="true"
-                  android:exported="false" />
-
         <service android:name="com.android.incallui.InCallServiceImpl"
                  android:permission="android.permission.BIND_INCALL_SERVICE"
                  android:encryptionAware="true" >
@@ -334,6 +331,11 @@
             </intent-filter>
         </service>
 
+        <!-- BroadcastReceiver for receiving Intents from Notification mechanism. -->
+        <receiver android:name="com.android.incallui.NotificationBroadcastReceiver"
+            android:encryptionAware="true"
+            android:exported="false" />
+
         <provider
             android:name=".database.FilteredNumberProvider"
             android:authorities="com.android.dialer.database.filterednumberprovider"
diff --git a/src/com/android/dialer/calllog/MissedCallNotifier.java b/src/com/android/dialer/calllog/MissedCallNotifier.java
index c422dd5..98d02d0 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.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 @@
                 // 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 @@
         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);
             }