我正在开发一个 Cordova 应用程序,应该以“Kiosk”模式运行 - 设备将被锁定在该应用上,不应能够退出。
为了实现这一点,我正在使用一个稍微修改过的 cordova-plugin-kiosk 版本,它提供了一个额外的活动(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>
我希望将它们合并成一个单一的活动并消除混乱。
我可以想到两种可能的方法:
- 找到一种方法从
AndroidManifest.xml
中删除MainActivity
部分,并有望使cordova run android
运行KioskActivity
。 - 找到一种方法修改
MainActivity
并将KioskActivity
中的代码移入其中。
然而,我无法找到任何明智的方法来实现这两个目标,而不会通过破坏所有 cordova 工具来引起更多混乱。
before_build
的文件夹。将updateMainActivity.sh
放在scripts
中,将MainActivity.java
与config.xml
一起放在项目根目录中。 - SystemParadox