无法实施Google API“使用特定应用进行搜索”

时间:2015-06-22 04:36:39

标签: android google-api

我正在尝试根据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();
        }

    }

}

1 个答案:

答案 0 :(得分:2)

从这个post中可以看出,必须先发布应用才能使功能正常运行。但是,我们可以使用以下adb shell命令

来模拟这一点
adb shell am start -a com.google.android.gms.actions.SEARCH_ACTION -e query 'search for xyz on..' packagename