В настоящее время я внедряю приложения Google для индексирования api и голосового поиска в своем приложении, и у меня возникают проблемы с Google, не выполняющим поиск моего приложения на определенных устройствах. Большинство устройств, которые я тестировал на работе, как и ожидалось, следуют их code lab example, где локальный поиск с автозаполнением появляется для содержимого, просматриваемого в моем приложении. Мое приложение появляется в приложениях для поиска в настройках поиска в Google Phone, когда он работает правильно.Объявление об индексировании приложений для Android
Однако по каким-то причинам определенные устройства, которые я тестировал (в частности, Galaxy S3 с 4.3 и Galaxy Note 3, работающие на 4.4.2), не отображаются в приложении Google Phone Search. Это, в свою очередь, означает, что ни один из моих результатов автозаполнения не появляется, несмотря на то, что App Indexing api говорит мне, что вызов index api был успешным. Когда приложение отсутствует в настройках поиска по телефону, голос Google в моем приложении также не работает, когда он обычно работает, когда говорит «Поиск < -MyApplication-> для < -Content->».
Глубокие ссылки, которые я установил в своем приложении, работают независимо от работы автозаполнения или голосового поиска. Это заставляет меня думать, что эта проблема может даже не быть чем-то, что я могу исправить в приложении.
Вот посмотрите на мой манифест:
<activity android:name=".StartActivity"
android:theme="@android:style/Theme.NoDisplay"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<!--Google Voice Search-->
<intent-filter>
<action android:name="com.google.android.gms.actions.SEARCH_ACTION"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<!--Deep link-->
<intent-filter>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="MyApp"/>
<action android:name="android.intent.action.VIEW"/>
</intent-filter>
</activity>
И вот как я называю приложение API индексации в одном из моих деятельности:
private void fireNewApplicationIndex(){
try {
JSONObject obj;
...
//The filters have been updated within the running activity
if(deepLink != null && mClient.isConnected()){
AppIndex.AppIndexApi.viewEnd(mClient, this, deepLink);
deepLink = null;
}
//Connect the client if it wasn't already
if(!mClient.isConnected())
mClient.connect();
//Report to google the deep link and the auto complete title
deepLink = Uri.parse(obj.getString(UriHandler.DEEP_LINK));
PendingResult<Status> result = AppIndex.AppIndexApi.view(mClient, this, deepLink, title, UriHandler.EMPTY_WEB_URI, null);
result.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
if(status.isSuccess()){
Log.d(TAG, "App Indexing success " + title);
} else {
Log.d(TAG, "App Indexing failure: " + status.toString());
}
}
});
}
} catch (Exception e) {
Log.d("App Indexing", e.getMessage() + "");
if(mClient.isConnected())
mClient.disconnect();
}
}