我正在尝试根据android documentation实施“使用特定应用搜索”功能。但我无法让它发挥作用。这是我的查询' Ok google,在helloapp上搜索xyz '
以下是我的实施。我添加了不需要的元数据,但没有它也无法工作。
实施
清单
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.default_searchable"
android:value=".SearchableActivity" />
</activity>
<activity
android:name=".SearchableActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.google.android.gms.actions.SEARCH_ACTION"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:value=".SearchableActivity" />
</activity>
可搜索的活动
public class SearchableActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.searchlayout);
Intent intent = getIntent();
if(SearchIntents.ACTION_SEARCH.equals(intent.getAction())){
String query = intent.getStringExtra(SearchManager.QUERY);
Toast.makeText(getApplicationContext(), query, Toast.LENGTH_LONG).show();
}
}
}
答案 0 :(得分:2)
从这个post中可以看出,必须先发布应用才能使功能正常运行。但是,我们可以使用以下adb shell命令
来模拟这一点adb shell am start -a com.google.android.gms.actions.SEARCH_ACTION -e query 'search for xyz on..' packagename