5

Hej!Индексирование приложений для Android -> FirebaseAppIndexingInvalidArgumentException

Я пытаюсь внедрить контент для индексирования приложений, и я начал с примера кода Google codelabs app-indexing.

Выполнение этого кода

Indexable recipeToIndex = new Indexable.Builder() 
      .setName(mRecipe.getTitle()) 
      .setUrl(mRecipe.getRecipeUrl()) 
      .setImage(mRecipe.getPhoto()) 
      .setDescription(mRecipe.getDescription()) 
      .build(); 

FirebaseAppIndex.getInstance().update(recipeToIndex); 

всегда приводит к FirebaseAppIndexingInvalidArgumentException брошенного метода update().

com.google.firebase.appindexing.FirebaseAppIndexingInvalidArgumentException: Intent 'Intent { act=android.intent.action.VIEW dat=http://example.com pkg=com.example }' cannot be resolved. The invalid indexable is: Indexable { { id: 'http://example.com/123' } Properties { { key: 'name' value: [ 'test_name' ] } } Metadata { worksOffline: false, score: 0 } } 
          at com.google.firebase.appindexing.internal.zzn.zzb(Unknown Source) 
          at com.google.firebase.appindexing.internal.zzd$zzc$1.onComplete(Unknown Source) 
          at com.google.android.gms.tasks.zzc$1.run(Unknown Source) 
          at android.os.Handler.handleCallback(Handler.java:739) 
          at android.os.Handler.dispatchMessage(Handler.java:95) 
          at android.os.Looper.loop(Looper.java:145) 
          at android.app.ActivityThread.main(ActivityThread.java:5951) 
          at java.lang.reflect.Method.invoke(Native Method) 
          at java.lang.reflect.Method.invoke(Method.java:372) 
          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) 
          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195) 

У вас есть предложения, как добавить изображение в Indexable?

+0

Что вы пытаетесь передать функции .setImage? Это должен быть URL-адрес фотографии: «http://example.com/salad.jpg» Кроме того, представленная стекяная структура выглядит странно ... Этот код не индексирует ничего из формы http://example.com/123 - это то, что вы написали сами? –

+0

Удалось ли вам найти разрешение, я получаю такое же исключение. Я не передаю URL-адрес изображения, это обязательно? – Tasneem

ответ

-1

Вы должны выбрать подходящий (или тот, который подходит лучше) Builder от класса Indexables, как в образце.

1

Удалить сообщение с изображением или отредактировать его код.

if (friendlyMessage.getText() != null) { 
    FirebaseAppIndex.getInstance().update(getMessageIndexable(friendlyMessage)); 
} 
FirebaseUserActions.getInstance().end(getMessageViewAction(friendlyMessage)); 

Похоже, что руководство не рассматривает сообщение без сообщения. Все сообщения должны быть текстовыми или текстовыми с изображением. Чтобы исправить это, вы должны проверить. https://github.com/firebase/friendlychat/issues/160

+0

У меня была немного другая проблема, чем у ОП. Я получал NPE от функции setName, потому что одно из сообщений было только изображением и не содержало текста. Нулевая проверка помогла. –

0

Причина, по которой я получал эту ошибку, состояла в том, что в манифесте для приложения, которое я тестировал, не было фильтра намерения.

Убедитесь в URL вы устанавливаете на индексируемые, что есть соответствующая запись в проявленном

<activity android:name=".MainActivity"> 
 
      <intent-filter> 
 
       <action android:name="android.intent.action.MAIN" /> 
 

 
       <category android:name="android.intent.category.LAUNCHER" /> 
 
      </intent-filter> 
 

 
      <intent-filter android:label="@string/app_name" android:autoVerify="true"> 
 
       <action android:name="android.intent.action.VIEW" /> 
 
       <category android:name="android.intent.category.DEFAULT" /> 
 
       <category android:name="android.intent.category.BROWSABLE" /> 
 

 
       <data android:scheme="http" 
 
        android:host="century.com" 
 
        android:pathPrefix="/recipe" /> 
 
      </intent-filter> 
 
     </activity>

0

Обеспечить setUrl() recieves хорошо сформированный URL, шахта была http://app.com//path

// перед пути возникла проблема

Indexable recipeToIndex = new Indexable.Builder() 
      .setName(mRecipe.getTitle()) 
      .setUrl(Uri.parse(mRecipe.getRecipeUrl()).toString()) 
      .setImage(Uri.parse(mRecipe.getPhoto()).toString()) 
      .setDescription(mRecipe.getDescription()) 
      .build(); 

Это не так важно для setImage