From 46959e92623e635967fb264ab72b77f93e86002c Mon Sep 17 00:00:00 2001 From: Yorke Lee Date: Fri, 9 Oct 2015 11:37:34 -0700 Subject: Fix crash in BlockedNumberSearchActivity Don't require RegularSearchFragment's parent activity to implement CapabilityChecker interface. In the context of the BlockedNumberSearchActivity this functionality is not needed. Bug: 24804134 Change-Id: I848ae66c6f8afc6e60b19bc28e933ae1e2f59893 --- src/com/android/dialer/DialtactsActivity.java | 3 ++- .../android/dialer/list/RegularSearchFragment.java | 23 ++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java index 4bfd56594..d44e8e7cf 100644 --- a/src/com/android/dialer/DialtactsActivity.java +++ b/src/com/android/dialer/DialtactsActivity.java @@ -110,7 +110,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O ListsFragment.HostInterface, SpeedDialFragment.HostInterface, SearchFragment.HostInterface, - RegularSearchFragment.HostInterface, + RegularSearchFragment.CapabilityChecker, OnDragDropListener, OnPhoneNumberPickerActionListener, PopupMenu.OnMenuItemClickListener, @@ -607,6 +607,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O } else if (fragment instanceof SearchFragment) { mRegularSearchFragment = (RegularSearchFragment) fragment; mRegularSearchFragment.setOnPhoneNumberPickerActionListener(this); + mRegularSearchFragment.setCapabilityChecker(this); } else if (fragment instanceof ListsFragment) { mListsFragment = (ListsFragment) fragment; mListsFragment.addOnPageChangeListener(this); diff --git a/src/com/android/dialer/list/RegularSearchFragment.java b/src/com/android/dialer/list/RegularSearchFragment.java index 0b8703399..33ce95f78 100644 --- a/src/com/android/dialer/list/RegularSearchFragment.java +++ b/src/com/android/dialer/list/RegularSearchFragment.java @@ -29,6 +29,7 @@ import com.android.contacts.common.util.PermissionsUtil; import com.android.contacts.commonbind.analytics.AnalyticsUtil; import com.android.dialerbind.ObjectFactory; import com.android.incallui.Call.LogState; + import com.android.dialer.R; import com.android.dialer.service.CachedNumberLookupService; import com.android.dialer.widget.EmptyContentView; @@ -44,11 +45,12 @@ public class RegularSearchFragment extends SearchFragment private static final CachedNumberLookupService mCachedNumberLookupService = ObjectFactory.newCachedNumberLookupService(); - public interface HostInterface { + public interface CapabilityChecker { public boolean isNearbyPlacesSearchEnabled(); } private String mPermissionToRequest; + private CapabilityChecker mCapabilityChecker; public RegularSearchFragment() { configureDirectorySearch(); @@ -60,6 +62,12 @@ public class RegularSearchFragment extends SearchFragment AnalyticsUtil.sendScreenView(this); } + @Override + public void onDetach() { + mCapabilityChecker = null; + super.onDetach(); + } + public void configureDirectorySearch() { setDirectorySearchEnabled(true); setDirectoryResultLimit(SEARCH_DIRECTORY_RESULT_LIMIT); @@ -102,7 +110,7 @@ public class RegularSearchFragment extends SearchFragment descriptionResource = R.string.permission_no_search; listener = this; mPermissionToRequest = READ_CONTACTS; - } else if (((HostInterface) getActivity()).isNearbyPlacesSearchEnabled() + } else if (isNearbyPlacesSearchEnabled() && !PermissionsUtil.hasPermission(getActivity(), ACCESS_FINE_LOCATION)) { imageResource = R.drawable.empty_contacts; actionLabelResource = R.string.permission_single_turn_on; @@ -156,4 +164,15 @@ public class RegularSearchFragment extends SearchFragment return isRemoteDirectory ? LogState.INITIATION_REMOTE_DIRECTORY : LogState.INITIATION_REGULAR_SEARCH; } + + public void setCapabilityChecker(CapabilityChecker capabilityChecker) { + mCapabilityChecker = capabilityChecker; + } + + private boolean isNearbyPlacesSearchEnabled() { + if (mCapabilityChecker != null) { + return mCapabilityChecker.isNearbyPlacesSearchEnabled(); + } + return false; + } } -- cgit v1.2.3