kitkat - La búsqueda global no funciona como se espera en Android 4.4
rom android 4.4 2 universal (3)
Tengo una aplicación que tiene dos proveedores de sugerencias de búsqueda que extienden SearchRecentSuggestionsProvider
, y la he configurado correctamente en el archivo de manifiesto con el siguiente filtro de Intent
y metadatos:
<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 searcable 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 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 aplicación. Lo mismo ocurre con otras aplicaciones que funcionaron 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 esperaba. Parece que es un error en la actualización de Google.
Encontré este compromiso en AOSP, que podría estar relacionado: https://android.googlesource.com/platform/packages/apps/QuickSearchBox/+/ecf356c15143ab0583c64682de16d94a57f7dd1c
El mensaje de confirmación nos dice que esta función se eliminó debido a razones de rendimiento (lo que podría ser cierto o no, dado que hace referencia a un ID de ticket interno y no encontré ningún problema relacionado con esto en el bugtracker oficial).
Google Chrome aparece ahora como una aplicación de búsqueda desde su última actualización (v31).
Aplicación del sistema:
Han 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>
Verifiqué con los contactos en Google, y la indexación de la aplicación está reemplazando esto. La documentación se actualizará para mostrar que está en desuso, y no hay forma de que esta función funcione en Kit Kat sin permisos de nivel de sistema (como se mostró anteriormente en iDev).