summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/search/actionbar/SearchMenuController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/search/actionbar/SearchMenuController.java')
-rw-r--r--src/com/android/settings/search/actionbar/SearchMenuController.java45
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;
});
}