如何在免安装应用中包含即时动态功能模块?

2024-01-17

我有一个包含这些模块的项目:

  • app
  • bookingfeature(即时启用)
  • map(不是即时的)

app包含一些通用代码和资源以及一个启动活动,其中包含一些逻辑,根据应用程序是否即时运行将应用程序路由到正确的目的地。

bookingfeature包含我想要使用即时应用程序部署的活动和一些片段。

map包含应用程序的其余部分(正在进行中以将其拆分为更多模块)

如果我在 android studio 中像这样部署它,一切都会正常工作:

如果我取消选中该框bookingfeature显然它不起作用,因为该功能不存在。

当我创建应用程序包并将其上传到 Play 商店,然后在 Play 商店中单击“立即尝试”时,其行为如下bookingfeature没有勾选。

我可以让它表现得像bookingfeature被勾选,将其包含在app模块不知何故?或者我是否必须将所有代码从bookingfeature into app?

“立即尝试”按钮是否只运行app模块,有没有办法改变呢?


app显现:

<manifest …>
<dist:module dist:instant="true" />

<application
   …
   android:name=“.App”>

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


bookingfeature显现:

<manifest ...>

    <dist:module
        dist:instant="true"
        dist:title="@string/title_bookingfeature">
        <dist:delivery>
            <dist:install-time />
        </dist:delivery>
        <dist:fusing dist:include="false" />
    </dist:module>
    <application>
        <activity
            android:name=".booking.view.BookingActivity"/>
    </application>
</manifest>

MainActivity:

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = DataBindingUtil
            .setContentView(this, R.layout.activity_main)

        if (isInstantApp(this)) {
            findNavController(R.id.main_nav_host).navigate(R.id.booking_activity)
        } else {
            findNavController(R.id.main_nav_host).navigate(R.id.splash_activity)
        }
        finish()
    }
}

navigation:

...
<activity
   android:id="@+id/booking_activity"
   android:name="x.x.x.booking.view.BookingActivity"
   app:moduleName="bookingfeature" />

<activity
    android:id="@+id/splash_activity"
    android:name="x.x.map.splash.SplashActivity"
    app:moduleName="map" />

EDIT:

当我删除时finish()从该活动来看,它实际上会启动 BookingActivity 并安装功能模块。但这并不完全是我想要的。我希望在下载即时应用程序时包含该模块。


我遇到了完全相同的问题,这个选项“部署为即时应用程序”毁了我几个小时。 无论如何,我通过在即时模块的清单中添加 CATEGORY_LAUNCHER 来摆脱它(预订功能在你的情况下)。

您必须从中删除 CATEGORY_LAUNCHER基本模块清单并且只将其添加到即时模块清单否则,当使用 Playstore 上的“安装”按钮安装应用程序时,它将显示两个应用程序图标。

现在,当您使用“立即尝试”时,它将打开设置为启动器的即时模块活动,从该活动中您可以检查它是否作为即时应用程序运行并启动基本模块活动。

Instant Module Activity will look like this -
    <activity
                android:name=".booking.view.BookingActivity">
    <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
    </activity>

当您使用 Playstore 上的“安装”按钮安装应用程序时,它还会下载即时模块以及基本模块。 因此,现在它将启动即时模块的 BookingActivity,并在该活动中检查它是否作为即时应用程序运行 -

val instantApp = InstantApps.getPackageManagerCompat(this).isInstantApp()
if(!instantApp) {
 // start base module activity
// finish() this activity
}

希望这有帮助,如果您有任何建议/任何其他方法来解决它,请发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在免安装应用中包含即时动态功能模块? 的相关文章

  • 如何从该 JAVA 文件中提取 Delphi 类以与 Android 一起使用?

    我的Delphi XE7项目需要与FTDI FT311 Android 配件芯片 http www ftdichip com Products ICs FT311D html 他们帮助提供了一个 Android 演示 其中包括他们的 JAV
  • 我在哪里可以获得可靠的熵来源(真正的随机性字节[])?

    目前 我正在寻找一种方法来增加随机性的质量 in my Android应用程序 纸牌游戏 之前 估计对于我的情况 52 排列 至少需要 226 位熵 226 个随机位 我打算用这个byte 作为种子SecureRandom SecureRa
  • 从 arraylist 和 hashmap 中删除重复项

    我有一个数组列表 其中包含付款人的姓名 另一个数组列表包含每次付款的费用 例如 nameArray 尼古拉 劳尔 洛伦佐 劳尔 劳尔 洛伦佐 尼古拉 价格数组 24 12 22 18 5 8 1 我需要将每个人的费用相加 所以数组必须变成
  • 通过 jQuery 选择动态 HTML 元素

    我正在构建一个 ASP NET MVC 应用程序 并且正在使用jQuery Blueimp https github com blueimp jQuery File Upload动态添加到页面的 PartialView 上的插件 根据插件的
  • 使用 HttpUrlConnection Android 将 base64 编码的图像发送到服务器

    我正在尝试使用 HttpUrlConnection 将 base64 编码的图像发送到服务器 我遇到的问题是大多数图像均已成功发送 但有些图像会生成 FileNotFound 异常 我的图像编码代码可以在下面找到 public static
  • 使用 Android Firebase 堆栈推送通知

    我开发了使用 Firebase 接收推送通知的 Android 应用程序 我的代码基于 Firebase Google 官方文档 https firebase google com docs cloud messaging android
  • 在选项卡上保存数据

    我有 3 个选项卡 每个选项卡都有一个单独的活动 我想在用户单击任一选项卡上的 保存 时保存数据 有几个选项可供选择 共享首选项 全局变量或将对象保存在上下文中 编辑 我必须保存图像和文本字段 Android 共享首选项 https sta
  • Android:使 Dialog 周围的所有内容都比默认值更暗

    我有一个具有以下样式的自定义对话框 它显示了一个无边框对话框 后面的任何内容都会 稍微 变暗 我的设计师希望背后的一切都比 Android 的默认设置更暗 但不是完全黑色 有这样的设置吗 我能想到的唯一解决方法是使用全屏活动而不是对话框 只
  • 使用 Android Studio 进行调试永远停留在“等待调试器”状态

    UPDATE The supposed重复是一个关于陷入 等待调试器 执行时Run 而这个问题就陷入了 等待调试器 执行时Debug 产生问题的步骤不同 解决方案也不同 每当我尝试使用Android Studio的调试功能时 运行状态总是停
  • Emma 不生成coverage.ec

    我设置了艾玛 它曾经对我有用 然后我们更改了源代码 现在它没有生成coverage ec根本不 它确实生成coverage em 测试临近结束时 出现错误消息 exec INSTRUMENTATION CODE 0 echo Downloa
  • 如何使用应用程序接口将蓝牙套接字传递给另一个活动

    因此 根据我收集的信息 套接字连接既不可序列化 也不可分割 但我需要将蓝牙连接传递给另一个活动 我不想作为中间人编写服务 所以请不要将此作为解决方案发布 我听说有一种方法可以使用自定义应用程序接口来传递这些类型的对象 但我一生都找不到这样的
  • Android 中的列表视图分页

    我有一个列表视图 其中显示了 50 个元素 我决定对视图进行分页 以便视图的每个部分都有 10 个元素 然后单击 下一个 按钮以获取下一个 10 个元素 如何设置10个数据 我关注这篇文章http rakhi577 wordpress co
  • TextInputLayout 对于在 EditText 中以编程方式给出提示没有效果

    我有一个 EditText 它的父级是 TextInputLayout 我试图以编程方式为 EditText 提供提示 不在布局中 在这种情况下 文本输入提示动画不起作用 它像简单的 EditText 一样工作 有人可以建议如何处理它吗 下
  • 即使 Android M 上的移动数据已打开(有连接),也可以通过 WiFi(无连接)发送请求

    我必须在没有互联网连接的情况下将 UDP 数据包发送到 WiFi 模块 配有自己的 AP 但是当我将手机连接到 AP 时 Android 会在移动数据接口上重定向我的数据包 因为它有互联网连接 我使用下面的代码来完成我的工作 但它似乎不适用
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 屏幕开/关检测

    在这里 我试图确定屏幕是否打开 但按下电源锁定 解锁按钮时它似乎不起作用 应用程序运行没有错误 但 if else 中的代码似乎没有效果 Edited现在代码可以工作了 谢谢Olgun 但媒体播放器播放不会停止 并且每次在屏幕上 离屏时都会
  • Glass 语音命令给定列表中最接近的匹配项

    使用 Glass 您可以通过 确定 Glass 菜单启动应用程序 它似乎会选择最接近的匹配项 除非命令相距数英里 并且您可以明显看到命令列表 无论如何 是否可以从应用程序内或从语音提示 在初始应用程序触发后 给出类似的列表并返回最接近的匹配
  • 在 Nougat 7.1.1 中点击应用程序快捷方式时出现应用程序未安装错误

    我在向现有应用程序添加静态应用程序快捷方式时遇到一些问题 我按照以下步骤操作https developer android com guide topics ui shortcuts html https developer android
  • 使用Intent拨打电话需要权限吗?

    在我的一个应用程序中 我使用以下代码来拨打电话 Intent intent new Intent Intent ACTION CALL Uri parse startActivity intent 文档说我确实需要以下清单许可才能这样做
  • 如何正确编写AttributeSet的XML?

    我想创建一个面板适用于 Android 平台的其他小部件 http code google com p android misc widgets 在运行时 XmlPullParser parser getResources getXml R

随机推荐