Don't show welcome screen when talkback is on and on pre-L-MR1

- This is a workaround.

Bug: 31180524

Test: manual - welcome screen is not shown if we are on Lollipop
               and Talkbak is on.

Change-Id: I02636d2d5f305b9d0281f5a6cce88af79573b847
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index c9c5915..25315e8 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -43,6 +43,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
 import android.widget.Button;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
@@ -55,6 +56,7 @@
 import com.android.contacts.R;
 import com.android.contacts.activities.ActionBarAdapter;
 import com.android.contacts.common.Experiments;
+import com.android.contacts.common.compat.CompatUtils;
 import com.android.contacts.common.list.ContactEntryListFragment;
 import com.android.contacts.common.list.ContactListAdapter;
 import com.android.contacts.common.list.ContactListFilter;
@@ -245,6 +247,7 @@
     private void maybeShowHamburgerFeatureHighlight() {
         if (mActionBarAdapter!= null && !mActionBarAdapter.isSearchMode()
                 && !mActionBarAdapter.isSelectionMode()
+                && !isTalkbackOnAndOnPreLollipopMr1()
                 && SharedPreferenceUtil.getShouldShowHamburgerPromo(getContext())) {
             if (FeatureHighlightHelper.showHamburgerFeatureHighlight(mActivity)) {
                 SharedPreferenceUtil.setHamburgerPromoDisplayedBefore(getContext());
@@ -252,6 +255,14 @@
         }
     }
 
+    // There's a crash if we show feature highlight when Talkback is on, on API 21 and below.
+    // See b/31180524.
+    private boolean isTalkbackOnAndOnPreLollipopMr1(){
+        return ((AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE))
+                .isTouchExplorationEnabled()
+                    && !CompatUtils.isLollipopMr1Compatible();
+    }
+
     private void bindListHeader(int numberOfContacts) {
         final ContactListFilter filter = getFilter();
         // If the phone has at least one Google account whose sync status is unsyncable or pending