无法从Google即时接收搜索结果

时间:2015-06-28 23:15:17

标签: android cordova search google-now

我正在尝试从Google即时获取搜索结果。我已按照http://android-developers.blogspot.com/2014/10/the-fastest-route-between-voice-search.htmlhttps://developer.android.com/guide/components/intents-common.html#SearchOnApp上的说明进行操作。

它通过ADB运行,但在我将应用程序发布到PlayStore之后没有。在尝试搜索时(“在Casa Controller上搜索某些内容”),它表示它正在打开应用程序,但之后没有什么想法?

ADB Command Tested

Intent intent = new Intent(this, Activity.class);
startActivity(intent);

我的Android清单

adb shell am start -a com.google.android.gms.actions.SEARCH_ACTION --es query "salad" io.biddleinc.casacontroller

我的searchable.xml

  <?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="20702" android:versionName="2.7.2" android:windowSoftInputMode="adjustPan" package="io.biddleinc.casacontroller" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:exported="true" android:label="@string/app_name" android:launchMode="singleTop" android:name="HelloCordova" android:theme="@android:style/Theme.Black.NoTitleBar">
            <intent-filter>
                <action android:name="com.google.android.gms.actions.SEARCH_ACTION" />
                <category android:name="android.intent.category.DEFAULT" />
                <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=".SearchActivity" />
        </activity>
        <activity android:label="@string/app_name" android:name=".SearchActivity">
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="22" />
</manifest>

我的strings.xml

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint">
</searchable> 

我的Activity.java

    <?xml version='1.0' encoding='utf-8'?>
<resources>
    <string name="app_name">Casa Controller</string>
    <string name="app_label">Casa Controller</string>
    <string name="search_hint">What do you want to happen</string>
</resources>

1 个答案:

答案 0 :(得分:0)

首先,我认为您不需要覆盖onNewIntent()方法,无论如何都不需要语音识别。

尝试在xml中为intent-filter添加标签,如下所示,这对我来说很有用。

<manifest android:hardwareAccelerated="true" android:versionCode="20702" android:versionName="2.7.2" android:windowSoftInputMode="adjustPan" package="io.biddleinc.casacontroller" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:exported="true" android:label="@string/app_name" android:launchMode="singleTop" android:name="HelloCordova" android:theme="@android:style/Theme.Black.NoTitleBar">
        <intent-filter android:label="@string/app_name">
            <action android:name="com.google.android.gms.actions.SEARCH_ACTION" />
            <category android:name="android.intent.category.DEFAULT" />
            <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=".SearchActivity" />
    </activity>
    <activity android:label="@string/app_name" android:name=".SearchActivity">
        <intent-filter android:label="@string/app_name">
            <action android:name="android.intent.action.SEARCH" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
    </activity>
</application>
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="22" />

如果这不起作用,请尝试将两个intent-filter标记移动到一个活动中。您的应用可能会对哪个活动应该解释该操作感到困惑。

确保您在已发布到Play商店的应用的构建版本上运行此功能。因此,如果您发布的应用程序ID是com.example.myapp,那么请确保您没有尝试在调试版本com.example.myapp.debug上运行此测试。

另请注意,如果您的应用程序有一个奇怪的名称,如'MySup3rC00lApp',或类似的东西,那么Android可能无法打开它,因为它无法识别该应用程序。