Add Home / Launcher apps indexing

- add a BaseSearchIndexProvider to HomeSettings
- use a BroadcastReceiver for tracking add or remove of
Home / Launcher apps
- add "launcher" synonym for "home" too

- also code cleaning for DynamicIndexableContentMonitor

See bug: #16484927 Add "launcher" as a synonym for "home" in settings search

Change-Id: I819f4e5f7bd5e9a7882609206b2733ea1912fc69
This commit is contained in:
Fabrice Di Meglio
2014-07-22 15:06:31 -07:00
parent f0b952d045
commit d73045db7a
7 changed files with 127 additions and 16 deletions

View File

@@ -78,10 +78,8 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
new UserDictionaryContentObserver(mHandler);
private Context mContext;
private boolean mHasFeturePrinting;
private boolean mHasFetureIme;
private boolean mHasFeaturePrinting;
private boolean mHasFeatureIme;
private static Intent getAccessibilityServiceIntent(String packageName) {
final Intent intent = new Intent(AccessibilityService.SERVICE_INTERFACE);
@@ -104,9 +102,9 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
public void register(Context context) {
mContext = context;
mHasFeturePrinting = mContext.getPackageManager().hasSystemFeature(
mHasFeaturePrinting = mContext.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_PRINTING);
mHasFetureIme = mContext.getPackageManager().hasSystemFeature(
mHasFeatureIme = mContext.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_INPUT_METHODS);
// Cache accessibility service packages to know when they go away.
@@ -124,7 +122,7 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
mAccessibilityServices.add(resolveInfo.serviceInfo.packageName);
}
if (mHasFeturePrinting) {
if (mHasFeaturePrinting) {
// Cache print service packages to know when they go away.
PrintManager printManager = (PrintManager)
mContext.getSystemService(Context.PRINT_SERVICE);
@@ -141,7 +139,7 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
}
// Cache IME service packages to know when they go away.
if (mHasFetureIme) {
if (mHasFeatureIme) {
InputMethodManager imeManager = (InputMethodManager)
mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
List<InputMethodInfo> inputMethods = imeManager.getInputMethodList();
@@ -174,7 +172,7 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
Context.INPUT_SERVICE);
inputManager.unregisterInputDeviceListener(this);
if (mHasFetureIme) {
if (mHasFeatureIme) {
mContext.getContentResolver().unregisterContentObserver(
mUserDictionaryContentObserver);
}
@@ -242,7 +240,7 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
}
}
if (mHasFeturePrinting) {
if (mHasFeaturePrinting) {
if (!mPrintServices.contains(packageName)) {
final Intent intent = getPrintServiceIntent(packageName);
if (!mContext.getPackageManager().queryIntentServices(intent, 0).isEmpty()) {
@@ -253,7 +251,7 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
}
}
if (mHasFetureIme) {
if (mHasFeatureIme) {
if (!mImeServices.contains(packageName)) {
Intent intent = getIMEServiceIntent(packageName);
if (!mContext.getPackageManager().queryIntentServices(intent, 0).isEmpty()) {
@@ -273,7 +271,7 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
AccessibilitySettings.class.getName(), true, true);
}
if (mHasFeturePrinting) {
if (mHasFeaturePrinting) {
final int printIndex = mPrintServices.indexOf(packageName);
if (printIndex >= 0) {
mPrintServices.remove(printIndex);
@@ -282,7 +280,7 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
}
}
if (mHasFetureIme) {
if (mHasFeatureIme) {
final int imeIndex = mImeServices.indexOf(packageName);
if (imeIndex >= 0) {
mImeServices.remove(imeIndex);

View File

@@ -0,0 +1,36 @@
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.search;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.android.settings.HomeSettings;
import java.util.Set;
/**
* A BroadcastReceiver for detecting Home Launchers
*/
public class HomePackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Index.getInstance(context).updateFromClassNameResource(
HomeSettings.class.getName(), true, true);
}
}

View File

@@ -118,7 +118,7 @@ public final class SearchIndexableResources {
sResMap.put(HomeSettings.class.getName(),
new SearchIndexableResource(
Ranking.getRankForClassName(HomeSettings.class.getName()),
R.xml.home_selection,
NO_DATA_RES_ID,
HomeSettings.class.getName(),
R.drawable.ic_settings_home));