当我使用调试后缀作为调试版本时,我的可搜索活动未调用。没有后缀,一切正常。

build.gradle

debug {
            debuggable true
            applicationIdSuffix '.debug'
}


表现

<activity
    android:name=".ui.search.SearchableActivity"
    android:label=""
    android:theme="@style/AppTheme.NoActionBar"
    android:screenOrientation="portrait">
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>

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

<meta-data
    android:name="android.app.default_searchable"
    android:value=".ui.search.SearchableActivity" />


searchable.xm

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_name"
    android:hint="@string/action_search"
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer">
</searchable>

最佳答案

有同样的问题。这是因为applicationIdSuffix更改了程序包名称。这是searchView启动的一个技巧,而不是:

srchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));


您应该创建新的ComponentName:

srchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchableActivity.class)));


在这种情况下,您将获得有效的SearchableInfo

感谢this question与packageNameSuffix问题

10-04 12:12