gpt4 book ai didi

android - Cordova - 修改或删除 MainActivity

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:46:16 26 4
gpt4 key购买 nike

我正在开发一个 Cordova 应用程序,它应该在“Kiosk”模式下运行——设备将被锁定到该应用程序并且应该无法退出。

为了实现这一点,我使用了稍微修改过的 cordova-plugin-kiosk 版本,它提供了一个额外的 Activity (KioskActivity),它被定义为一个启动器(它有 android.intent.category.HOME)。

这工作得相当好。但是,该应用程序仍然具有原始的 cordova MainActivity,这会引起一些混淆,尤其是因为这是通过原始启动器中的图标和 cordova run android 命令启动的。它还会在 Chrome 远程检查器中生成两个条目。

AndroidManifest.xml 目前看起来像这样:

    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|uiMode" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|uiMode" android:label="@string/activity_name" android:launchMode="singleInstance" android:name="jk.cordova.plugin.kiosk.KioskActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</activity>

我想将这些合并到一个 Activity 中并消除困惑。

我可以看到 2 种可能的方法:

  1. 找到一种方法从 AndroidManifest.xml 中删除 MainActivity 部分,并希望也让 cordova run android 运行 KioskActivity 代替。
  2. 想办法修改 MainActivity 并将代码从 KioskActivity 移到其中。

但是,我找不到任何明智的方法来实现这些中的任何一个而不会破坏所有 cordova 工具而引起更多困惑。

最佳答案

有两种可能的解决方案:

1。使用钩子(Hook)修改MainActivity

使用 hook复制自定义 MainActivity.java进入platforms/android/src/[packageName]/并覆盖默认的 Cordova MainActivity .

例如,before_build钩子(Hook)可以添加到 <platform name="android">config.xml像这样:

<hook type="before_build" src="scripts/updateMainActivity.sh" />

在哪里scripts/updateMainActivity.sh是:

#!/bin/bash
cp MainActivity.java platforms/android/src/[packageName]/

(也可以用nodeJS写hook,有利于跨平台兼容)

2。使用 cordova-custom-config 删除 MainActivity

cordova-custom-config ,您需要做的就是将以下内容添加到 <platform name="android">您的 config.xml 部分:

<preference name="android-manifest/application/activity[@android:name='MainActivity']" delete="true" />

注意:您将需要 cordova-custom-config >= 3.0.0。

这是我采用的解决方案,因为我已经在使用 cordova-custom-config。

关于android - Cordova - 修改或删除 MainActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38530004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com