如何使用库项目实现应用程序索引?

How to implement app indexing with library project?

我正在尝试为我的一个应用程序实现应用程序索引,但我不太确定我应该 return 作为应用程序索引 appUri Action .

假设我有一个包名 com.example.myappwebUri http://example.com/some/path.

据我了解,在这种情况下 appUri 通常是 com.example.myapp/http/example.com/some/path,对吗?

现在输入我的应用程序使用的库项目,以及索引 activity 所在的位置。我们调用库项目 com.example.mylibrary 和索引 activity MyActivity.

如果我想使用 adb 启动 activity,我会使用

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

所以,我的问题是 - 在这种情况下,应用程序索引 ActionappUri 应该是什么?它是否受到 activity 在库项目中的影响?

一般来说,你可以通过库提供的Action.Builder来构建Action。作为 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();


有关详细信息,您可以查看 logging actions docs 及其示例应用程序。
测试:

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

其中 {包名称} = com.example.myapp 和 URL = http://example.com/some/path

最后,你放在库中的 Activity 应该有可以处理你的 URI 的意图过滤器 http://example.com/some/path