我正在尝试从Google即时获取搜索结果。我已按照http://android-developers.blogspot.com/2014/10/the-fastest-route-between-voice-search.html和https://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>
答案 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可能无法打开它,因为它无法识别该应用程序。