一个面向 monkeycode-ai.com 的 Android WebShell,重点补齐移动端 WebView 与桌面浏览器之间的文件能力差异。
这个项目把 https://monkeycode-ai.com/ 打包成一个 Android 应用,同时保留尽量接近桌面浏览器的使用体验,尤其针对以下场景做了增强:
- 网页登录态持久化
- 文件上传与多文件选择
- 文件下载到系统目录
- 下载通知、进度、完成提示
- 深色模式跟随系统
- 适配移动端键盘、状态栏、下拉刷新
- 补齐
Android WebView对网页文件系统保存能力的兼容层
- 直接打开
monkeycode-ai.com - 桌面风格 UA,手机尺寸与触控交互
- Cookie 持久化,方便再次打开后维持登录状态
- 状态栏避让与键盘顶起输入框
- 下拉刷新
- 下载文件默认保存到:
/sdcard/Download/monkeycode/ - 下载进度通知、下载完成通知、失败通知
- 主动请求通知权限与全部文件访问权限
- 注入网页原生桥:
window.MonkeyCodeNativewindow.MonkeyCodeAppCapabilities
- 文件系统兼容能力:
showSaveFilePickershowDirectoryPickernavigator.storage.getDirectoryblob:/data:下载接管getWriter()/write()/close()等写入兼容
.
├── app/
│ ├── build.gradle.kts
│ └── src/main/
│ ├── AndroidManifest.xml
│ ├── java/com/monkeycode/a731c2f4/MainActivity.kt
│ └── res/
├── build.gradle.kts
├── download_server.py
├── index.html
├── gradle.properties
├── MonkeyCode_latest.apk
├── LICENSE
└── settings.gradle.kts
使用 Android Studio 打开仓库根目录。
等待 Gradle 同步完成。
在 Android Studio 中执行:
Build > Build APK(s)- 或
Build > Generate Signed Bundle / APK
仓库内提供了一个简单下载页和下载服务:
index.htmldownload_server.py
下载页用于直接分发最终 APK 文件。
- 主入口:
app/src/main/java/com/monkeycode/a731c2f4/MainActivity.kt - 使用
WebView作为网页容器 - 使用
SwipeRefreshLayout处理下拉刷新 - 使用
WindowInsets处理状态栏和键盘区域
- 普通下载使用
DownloadManager - 自定义通知显示下载进度
- 下载完成后触发系统提示与本地提示
- 统一保存到
Download/monkeycode
为了让网页在 Android WebView 内更接近桌面 Edge 的文件保存体验,项目注入了一层兼容接口,补齐网页对文件系统保存能力的依赖。
- 首页地址:
MainActivity.kt中的HOME_URL - 应用名:
app/src/main/res/values/strings.xml - 包名:
app/build.gradle.kts与AndroidManifest.xml - 下载目录:
MainActivity.kt中的DOWNLOAD_SUBDIRECTORY
仓库根目录包含最终可用 APK:
MonkeyCode_latest.apk
GitHub Release 也会同步上传该安装包,方便直接下载。
本项目采用 MIT License。
