Fix Settings crash when clicking search bar
- When user disable settings suggestion in App Settings, click search button without leaving settings app. The search button is still existed. - Doesn't allow user to disable app in App Settings - Add check before start search intent Change-Id: Ifbc4615914678d8df734e14d63bb626403313d1e Fixes: 118805907 Test: manual
This commit is contained in:
@@ -23,6 +23,7 @@ import android.app.Activity;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.provider.Settings;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -88,6 +89,11 @@ public interface SearchFeatureProvider {
|
||||
intent.setPackage(getSettingsIntelligencePkgName(activity));
|
||||
final Context context = activity.getApplicationContext();
|
||||
|
||||
if (activity.getPackageManager().queryIntentActivities(intent,
|
||||
PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
FeatureFactory.getFactory(context).getSlicesFeatureProvider()
|
||||
.indexSliceDataAsync(activity.getApplicationContext());
|
||||
FeatureFactory.getFactory(context).getMetricsFeatureProvider()
|
||||
|
@@ -19,6 +19,7 @@ package com.android.settings.search.actionbar;
|
||||
import android.annotation.NonNull;
|
||||
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;
|
||||
@@ -80,6 +81,12 @@ public class SearchMenuController implements LifecycleObserver, OnCreateOptionsM
|
||||
searchItem.setOnMenuItemClickListener(target -> {
|
||||
final Intent intent = SearchFeatureProvider.SEARCH_UI_INTENT;
|
||||
intent.setPackage(SettingsIntelligencePkgName);
|
||||
|
||||
if (context.getPackageManager().queryIntentActivities(intent,
|
||||
PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
FeatureFactory.getFactory(context).getMetricsFeatureProvider()
|
||||
.action(context, MetricsProto.MetricsEvent.ACTION_SEARCH_RESULTS);
|
||||
mHost.startActivityForResult(intent, 0 /* requestCode */);
|
||||
|
Reference in New Issue
Block a user