Как реализовать индексацию приложений с помощью библиотечного проекта?

Я пытаюсь реализовать индексацию приложений для одного из моих приложений, но я не совсем уверен, что я должен вернуть как appUri для индексации приложения Action,

Допустим, у меня есть имя пакета com.example.myapp и webUrihttp://example.com/some/path,

Насколько я понимаю, appUri будет обычно com.example.myapp/http/example.com/some/path в этом случае правильно?

Теперь введите проект библиотеки, который использует мое приложение, и где существует индексированная активность. Назовем проект библиотеки com.example.mylibrary и индексированная активность MyActivity,

Если я хочу начать деятельность с помощью ADB, я бы использовал

adb shell am start -W -a android.intent.action.VIEW -d "http://example.com/some/path" com.example.myapp/com.example.mylibrary.MyActivity

Итак, мой вопрос - что должно appUri для индексации приложения Action быть в этом случае? На это вообще влияет тот факт, что деятельность в рамках библиотечного проекта?

1 ответ

Решение

В общем, вы можете собрать Action с помощью Action.Builder, предоставляемого библиотекой. В качестве URI вам необходимо предоставить связанный URI. Поэтому, если вы хотите проиндексировать View Action, вы должны указать URI продукта, который был просмотрен.

Uri.Builder builder = new Uri.Builder();
    String uriStr = builder
        .scheme("http")
        .authority("example.com")
        .appendPath("some/path").build().toString();

    Action action = new Action.Builder(Action.Builder.VIEW_ACTION)
        .setObject("productName", uriStr)
        .build();


Для получения более подробной информации вы можете посмотреть документацию действий и их пример приложения.
Тестировать:

adb shell am start -a android.intent.action.VIEW -d "{URL}" {package name}

где {имя пакета} = com.example.myapp и URL = http://example.com/some/path

В конце ваша активность в библиотеке должна иметь фильтр намерений, который может обрабатывать ваш URI http://example.com/some/path