Search no longer crashes if you don't have the contacts permission.
Bug: 71737256
Test: NewSearchFragmentTest
PiperOrigin-RevId: 183020934
Change-Id: Ifed4364901ca77036fa6d0b149857fbbd7e9fca0
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
index 23f368f..57e253c 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
@@ -28,9 +28,11 @@
import android.support.annotation.Nullable;
import android.text.TextUtils;
import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.dialer.common.LogUtil;
import com.android.dialer.searchfragment.common.Projections;
import com.android.dialer.searchfragment.common.SearchCursor;
import com.android.dialer.smartdial.SmartDialCursorLoader;
+import com.android.dialer.util.PermissionsUtil;
/** Cursor Loader for CP2 contacts. */
public final class SearchContactsCursorLoader extends CursorLoader {
@@ -80,6 +82,10 @@
@Override
public Cursor loadInBackground() {
+ if (!PermissionsUtil.hasContactsReadPermissions(getContext())) {
+ LogUtil.i("SearchContactsCursorLoader.loadInBackground", "Contacts permission denied.");
+ return null;
+ }
return isRegularSearch ? regularSearchLoadInBackground() : dialpadSearchLoadInBackground();
}
diff --git a/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java b/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java
index edf5f24..39c1187 100644
--- a/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java
@@ -25,6 +25,8 @@
import android.os.Build.VERSION_CODES;
import android.provider.ContactsContract;
import android.support.annotation.Nullable;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.util.PermissionsUtil;
import com.google.auto.value.AutoValue;
import java.util.ArrayList;
import java.util.List;
@@ -47,6 +49,15 @@
super(context, getContentUri(), PROJECTION, null, null, ContactsContract.Directory._ID);
}
+ @Override
+ public Cursor loadInBackground() {
+ if (!PermissionsUtil.hasContactsReadPermissions(getContext())) {
+ LogUtil.i("DirectoriesCursorLoader.loadInBackground", "Contacts permission denied.");
+ return null;
+ }
+ return super.loadInBackground();
+ }
+
/**
* Creates a complete list of directories from the data set loaded by this loader.
*