5

Hej!Lập chỉ mục ứng dụng Android -> FirebaseAppIndexingInvalidArgumentException

Tôi đang cố gắng triển khai nội dung lập chỉ mục ứng dụng và tôi đã bắt đầu với mẫu mã số Google app-indexing.

Chạy mã này

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

FirebaseAppIndex.getInstance().update(recipeToIndex); 

luôn kết quả trong một FirebaseAppIndexingInvalidArgumentException ném theo phương pháp 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) 

Bạn có đề xuất cách thêm hình ảnh vào Indexable không?

+0

Bạn đang cố gắng chuyển đến hàm .setImage? Nó phải là một url ảnh như vậy: "http://example.com/salad.jpg" Ngoài ra, stacktrace cung cấp trông lạ ... codelab đó không lập chỉ mục bất cứ điều gì của biểu mẫu http://example.com/123 - là từ một cái gì đó bạn đã viết cho mình? –

+0

Bạn có thể tìm thấy độ phân giải không, tôi cũng nhận được ngoại lệ tương tự. Tôi không chuyển url hình ảnh, nó là bắt buộc phải không? – Tasneem

Trả lời

-1

Bạn nên chọn trình tạo phù hợp (hoặc cái phù hợp hơn) từ lớp Indexables như trong mẫu.

1

Xóa tin nhắn hình ảnh hoặc chỉnh sửa mã như thế này.

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

Dường như hướng dẫn không xem xét thư không có thư. Tất cả các tin nhắn phải là văn bản hoặc văn bản có hình ảnh. Để khắc phục nó, bạn nên kiểm tra. https://github.com/firebase/friendlychat/issues/160

+0

Tôi gặp vấn đề hơi khác so với OP. Tôi đã nhận được NPE trên hàm setName vì một trong các tin nhắn chỉ là một hình ảnh và không có văn bản. Việc kiểm tra null đã giúp. –

0

Lý do tôi nhận được lỗi này là do không có bộ lọc ý định trong tệp kê khai cho ứng dụng tôi đã thử nghiệm.

Hãy chắc chắn rằng cho url bạn đang thiết trên lập chỉ mục mà có một mục tương ứng trong manifest

<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

Đảm bảo setUrl() recieves một URL cũng được hình thành, tôi đã có http://app.com//path

// trước đường dẫn gây ra sự cố

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

Điều này không quan trọng đối với setImage

Các vấn đề liên quan