当我使用调试后缀作为调试版本时,我的可搜索活动未调用。没有后缀,一切正常。
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问题