La búsqueda global no funciona como se espera en Android 4.4
-
20-12-2019 - |
Pregunta
Tengo una solicitud que tiene dos proveedores de sugerencias de búsqueda que ambos extienden SearchRecentSuggestionsProvider
, y lo configuré correctamente en el archivo manifiesto con el siguiente filtro de Intent
y meta-data:
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable_tv" />
El recurso audible incluye android:includeInGlobalSearch="true"
, por lo que debería estar bien.
y obviamente tengo un proveedor allí también:
<provider
android:name="com.miz.contentprovider.TvShowContentProvider"
android:authorities="com.miz.contentprovider.TvShowContentProvider"
android:exported="true" />
Todo esto funcionó bien en Android 4.3 utilizando la aplicación de búsqueda de Google, pero acabo de actualizar todos mis dispositivos a Android 4.4 y ya no puedo buscar contenido dentro de mi solicitud. Lo mismo ocurre con otras aplicaciones que trabajaron antes de la actualización del sistema operativo, es decir. Google Play Music.
He encontrado un hilo en los desarrolladores de XDA que también menciona esto, si ayuda: http://forum.xda-developers.com/showthread.php?p=47472102
¿Alguien tiene alguna idea de lo que está sucediendo o cómo se puede arreglar?
Actualización: Puedo confirmar que solo ocurre en dispositivos con Android 4.4. He probado en un dispositivo Android 4.3 utilizando la última actualización de Búsqueda de Google, y funciona como se espera. Parece que es un error en la actualización de Google.
Solución
Encontré que este compromiso en AOSP, que podría estar relacionado:
El mensaje de confirmación nos dice que esta característica se eliminó debido a razones de rendimiento (que podría o no ser cierto, dado que referencias a una identificación de boletos interna y no encontré un problema relacionado sobre esto en el BugTracker oficial).
Otros consejos
Revisé con contactos en Google, y La indexación de la aplicación está reemplazando esto.La documentación se actualizará para mostrar esto según se desactiva, y no hay forma de obtener esta función para trabajar en Kit Kat sin permisos de nivel de sistema (como se mostró IDEV anteriormente).
Google Chrome aparece ahora como una aplicación de búsqueda desde su última actualización (V31).
Aplicación del sistema:
hemos intentado así
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.globalsearch" android:sharedUserId="android.uid.shared">
<uses-permission android:name="android.permission.GLOBAL_SEARCH" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
<application android:label="@string/global_search" android:process="android.process.acore">
<activity android:name=".GlobalSearch" android:permission="android.permission.GLOBAL_SEARCH_CONTROL" android:stateNotNeeded="true" android:theme="@android:style/Theme.NoDisplay" android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<!-- This must be higher than the default priority (0), which
is what GoogleSearch uses. -->
<intent-filter android:priority="500">
<action android:name="android.search.action.GLOBAL_SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
</activity>
<activity android:name=".SearchSettings" android:label="@string/search_settings">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
<intent-filter>
<action android:name="android.search.action.SEARCH_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<provider android:name=".SuggestionProvider" android:authorities="com.android.globalsearch.SuggestionProvider" android:permission="android.permission.GLOBAL_SEARCH_CONTROL" />
<provider android:name=".StatsProvider" android:authorities="com.android.globalsearch.stats" android:permission="android.permission.GLOBAL_SEARCH_CONTROL" />
<meta-data android:name="android.app.default_searchable" android:value=".GlobalSearch" />
</application>
</manifest>