diff options
Diffstat (limited to 'src/com/android/settings/search/actionbar/SearchMenuController.java')
-rw-r--r-- | src/com/android/settings/search/actionbar/SearchMenuController.java | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/src/com/android/settings/search/actionbar/SearchMenuController.java b/src/com/android/settings/search/actionbar/SearchMenuController.java index 131f7884fc..25d0d3027d 100644 --- a/src/com/android/settings/search/actionbar/SearchMenuController.java +++ b/src/com/android/settings/search/actionbar/SearchMenuController.java @@ -17,20 +17,24 @@ package com.android.settings.search.actionbar; import android.annotation.NonNull; -import android.app.Fragment; +import android.app.settings.SettingsEnums; +import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import androidx.fragment.app.Fragment; + import com.android.settings.R; import com.android.settings.Utils; +import com.android.settings.core.InstrumentedFragment; +import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.SearchFeatureProvider; import com.android.settingslib.core.lifecycle.LifecycleObserver; -import com.android.settingslib.core.lifecycle.ObservableFragment; -import com.android.settingslib.core.lifecycle.ObservablePreferenceFragment; import com.android.settingslib.core.lifecycle.events.OnCreateOptionsMenu; public class SearchMenuController implements LifecycleObserver, OnCreateOptionsMenu { @@ -38,24 +42,34 @@ public class SearchMenuController implements LifecycleObserver, OnCreateOptionsM public static final String NEED_SEARCH_ICON_IN_ACTION_BAR = "need_search_icon_in_action_bar"; private final Fragment mHost; + private final int mPageId; - public static void init(@NonNull ObservablePreferenceFragment host) { - host.getLifecycle().addObserver(new SearchMenuController(host)); + public static void init(@NonNull InstrumentedPreferenceFragment host) { + host.getSettingsLifecycle().addObserver( + new SearchMenuController(host, host.getMetricsCategory())); } - public static void init(@NonNull ObservableFragment host) { - host.getLifecycle().addObserver(new SearchMenuController(host)); + public static void init(@NonNull InstrumentedFragment host) { + host.getSettingsLifecycle().addObserver( + new SearchMenuController(host, host.getMetricsCategory())); } - private SearchMenuController(@NonNull Fragment host) { + private SearchMenuController(@NonNull Fragment host, int pageId) { mHost = host; + mPageId = pageId; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + final Context context = mHost.getContext(); + final String SettingsIntelligencePkgName = context.getString( + R.string.config_settingsintelligence_package_name); if (!Utils.isDeviceProvisioned(mHost.getContext())) { return; } + if (!Utils.isPackageEnabled(mHost.getContext(), SettingsIntelligencePkgName)) { + return; + } if (menu == null) { return; } @@ -69,11 +83,18 @@ public class SearchMenuController implements LifecycleObserver, OnCreateOptionsM searchItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); searchItem.setOnMenuItemClickListener(target -> { - final Intent intent = SearchFeatureProvider.SEARCH_UI_INTENT; - intent.setPackage(FeatureFactory.getFactory(mHost.getContext()) - .getSearchFeatureProvider().getSettingsIntelligencePkgName()); + final Intent intent = FeatureFactory.getFactory(context) + .getSearchFeatureProvider() + .buildSearchIntent(context, mPageId); + + if (context.getPackageManager().queryIntentActivities(intent, + PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) { + return true; + } - mHost.startActivityForResult(intent, 0 /* requestCode */); + FeatureFactory.getFactory(context).getMetricsFeatureProvider() + .action(context, SettingsEnums.ACTION_SEARCH_RESULTS); + mHost.startActivityForResult(intent, SearchFeatureProvider.REQUEST_CODE); return true; }); } |