Pergunta

Eu tenho um aplicativo que possui dois provedores de sugestões de pesquisa que estendem SearchRecentSuggestionsProvider, e configurei-o corretamente no arquivo de manifesto com o seguinte Intent filtro e metadados:

<intent-filter>
   <action android:name="android.intent.action.SEARCH" />
</intent-filter>

<meta-data
   android:name="android.app.searchable"
   android:resource="@xml/searchable_tv" />

O recurso pesquisável inclui android:includeInGlobalSearch="true", então tudo bem.

E obviamente também tenho um provedor lá:

<provider
   android:name="com.miz.contentprovider.TvShowContentProvider"
   android:authorities="com.miz.contentprovider.TvShowContentProvider"
   android:exported="true" />

Tudo isso funcionou perfeitamente no Android 4.3 usando o aplicativo de pesquisa do Google, mas acabei de atualizar todos os meus dispositivos para o Android 4.4 e não consigo mais pesquisar conteúdo no meu aplicativo.A mesma coisa vale para outros aplicativos que funcionavam antes da atualização do sistema operacional, ou seja,Google Play Música.

Encontrei um tópico sobre desenvolvedores XDA que menciona isso também, se ajudar: http://forum.xda-developers.com/showthread.php?p=47472102

Alguém tem alguma ideia do que está acontecendo ou como isso pode ser corrigido?

Atualizar:Posso confirmar que isso ocorre apenas em dispositivos com Android 4.4.Testei em um dispositivo Android 4.3 usando a atualização mais recente da Pesquisa Google e funciona conforme o esperado.Parece que é um bug na atualização do Google.

Foi útil?

Solução

Encontrei este commit no AOSP, que pode estar relacionado:https://android.googlesource.com/platform/packages/apps/QuickSearchBox/+/ecf356c15143ab0583c64682de16d94a57f7dd1c

A mensagem de commit nos informa que esse recurso foi removido por motivos de desempenho (o que pode ou não ser verdade, visto que faz referência a um ID de ticket interno e não encontrei um problema relacionado sobre isso no bugtracker oficial).

Outras dicas

Verifiquei com os contatos do Google e Indexação de aplicativos está substituindo isso.A documentação será atualizada para mostrar que isso está obsoleto e não há como fazer esse recurso funcionar no Kit Kat sem permissões no nível do sistema (como o iDev mostrou acima).

O Google Chrome agora aparece como um aplicativo pesquisável desde sua última atualização (v31).

Aplicação do sistema:

Tente assim

<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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top