【问题标题】:How can i access an activity from another feature module如何从另一个功能模块访问活动
【发布时间】:2018-06-26 06:06:36
【问题描述】:

我正在创建一个即时应用程序,其中包括应用程序模块、基本功能模块、即时应用程序模块和另一个功能模块。问题是我无法从基本功能和功能模块访问应用程序模块的活动,基本功能模块和功能模块之间也是如此,但我能够从应用程序模块访问基本功能模块的活动。

现在我正在使用以下方式访问活动:

Intent i = new Intent(this,
                    Class.forName("com.demo.test.appmodule.TextActivity"));

通过这种方法,工作室在编译时不会向我显示任何错误。

  1. 两个不同的功能模块之间有没有其他的通信方式?
  2. 为什么我可以从应用程序模块访问基本功能模块活动,反之则不行?
  3. 我们可以从基础模块或任何其他功能模块访问应用程序模块的活动吗?

我可以有一个链接来定义免安装应用的项目结构吗

提前致谢

【问题讨论】:

    标签: android android-instant-apps


    【解决方案1】:

    您无法在功能之间直接通信的原因是它们彼此独立。

    处理此问题的正确方法是使用其 URL 调用它,例如:android-instant-apps/hello-feature-module/HelloActivity.java

    Intent intent = new Intent(Intent.ACTION_VIEW,
    Uri.parse("https://hello-feature.instantappsample.com/goodbye"));
    intent.addCategory(Intent.CATEGORY_BROWSABLE);
    startActivity(intent);
    

    在免安装应用结构中,base 充当功能模块的库,而功能内置于 APKs。在已安装的应用程序结构中,基础和功能都充当应用程序模块的库。可以在这里找到一些解释:

    曾经有一个页面@https://g.co/instantapps 解释了免安装应用的结构,但现在好像不见了。不过,你可以看看:

    不,您将无法通过功能直接访问应用程序的活动。作为已安装的应用程序,com.android.feature 模块被编译/表现为 com.android.library 模块,因此在这里应用相同的规则:应用程序依赖于库,而不是其他方式。要遍历该方向,您需要使用与上图相同的 Intent。

    com.android.application 中的任何内容都将与免安装应用的功能模块隔离,并且只会出现在已安装的应用中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      相关资源
      最近更新 更多