辅助工具本质上是由html编写的网页,但是有本地扩展功能可供调用,扩展功能分两部分:

  1. 利用js扩展API来增强功能
  2. 连接本地HTTP服务器实现文件交互

js扩展API

js扩展API测试页: https://www.yzjlb.net/app/opmrcc/assistshop/mapp_test.html

扩展APi说明: javascript通过检测mapp 来实现调用js扩展功能,例如:

 const result = mapp.getAppInfo();
 console.log('appInfoResult', '✅ 调用成功:\n' + formatJson(result), 'success');

获取当前应用信息

方法名:getAppInfo

返回内容:

{
  "appName": "OMRCC", //应用名称
  "platform": "Android", //应用平台
  "packageName": "com.xl.opmrcc", //应用包名
  "versionName": "1.0.0", //应用版本名称
  "versionCode": 1, //应用版本号
  "minSdkVersion": 21, //应用最低支持的SDK版本
  "targetSdkVersion": 30, //应用目标SDK版本
  "androidId": "1234567890abcdef", //应用的Android ID
  "orientation": "portrait", //应用的屏幕方向
  "colorAccent": "#FF4081", //应用的强调颜色
  "textColor": "#000000", //应用的文本颜色
  "backgroundColor": "#FFFFFF", //应用的背景颜色
  "workDir": "/storage/emulated/0/Android/data/com.xl.opmrcc/files/OMRCC", //应用的工作目录
  "filesDir": "/storage/emulated/0/Android/data/com.xl.opmrcc/files", //应用的文件目录
  "cacheDir": "/storage/emulated/0/Android/data/com.xl.opmrcc/cache", //应用的缓存目录
  "signatureMD5": "1234567890abcdef", //应用的签名MD5值
  "signatureSHA1": "1234567890abcdef", //应用的签名SHA1值
  "colorControlNormal": "#FF4081" //应用的普通控件颜色
}

获取手机信息

方法名:getPhoneInfo

返回内容:

{
  "manufacturer": "Samsung", //手机制造商
  "model": "Galaxy S21", //手机型号
  "brand": "samsung", //手机品牌
  "device": "o1s", //设备名称
  "product": "o1sxx", //产品名称
  "androidVersion": "11", //安卓版本
  "sdkInt": 30, //SDK版本号
  "cpuAbi": "arm64-v8a", //CPU架构
  "screenWidth": 1080, //屏幕宽度(像素)
  "screenHeight": 2400, //屏幕高度(像素)
  "densityDpi": 420, //屏幕密度(DPI)
  "isRooted": false, //是否已Root
  "sdCardPath": "/storage/emulated/0", //内存卡地址
}

获取应用列表

方法名:getAppList

返回内容:

[
  {
    "appName": "OMRCC", //应用名称
    "packageName": "com.xl.opmrcc", //应用包名
    "versionName": "1.0.0", //应用版本名称
    "versionCode": 1, //应用版本号
    "minSdkVersion": 21, //应用最低支持的SDK版本
    "targetSdkVersion": 30, //应用目标SDK版本
    "image": "xxxx", //应用图标, base64编码
  },
  {
    "appName": "Hello World!", //应用名称
    "packageName": "com.example.hello", //应用包名
    "versionName": "1.0", //应用版本名称
    "versionCode": 1, //应用版本号
    "minSdkVersion": 21, //应用最低支持的SDK版本
    "targetSdkVersion": 30, //应用目标SDK版本
    "image": "xxxx", //应用图标, base64编码
  }
]

启动一个intent

方法名:startIntent 参数: packageName :应用包名 activityName :活动名称(可选),如果为空则默认启动应用主活动 params :启动参数(可选),如果为空则默认不传递参数 示例:

{
  "packageName": "com.example.hello",
  "activityName": "com.example.hello.MainActivity",
  "params": {
    "path": "value1",
    "showTitle": "value2"
  }
}

获取编辑器信息

方法名:getEditorInfo

返回内容:

{
  "projectPath": "/storage/emulated/0/Android/data/com.xl.opmrcc/files/OMRCC", //项目路径
  //当前编辑器中活跃的文件
  "activeFile": {
    "path": "/storage/emulated/0/Android/data/com.xl.opmrcc/files/OMRCC/hello.c", //文件路径
    "currentStart": 0, //当前光标位置
    "currentEnd": 0, //当前光标结束位置
    "content": "int main(){\n    return 0;\n}" //文件内容
  },
  "openFiles": [ //当前编辑器中打开的文件列表
    {
      "path": "/storage/emulated/0/Android/data/com.xl.opmrcc/files/OMRCC/hello.c", //文件路径
      "isActive": true //是否为活跃文件
    },
    {
      "path": "/storage/emulated/0/Android/data/com.xl.opmrcc/files/OMRCC/utils.h", //文件路径
      "isActive": false //是否为活跃文件
    }
  ]
}

设置编辑器内容

方法名:setEditorContent 参数: path :文件路径 content :文件内容

返回内容:boolean类型,true表示设置成功,false表示设置失败

启动一个http服务器

方法名:startHttpServer 参数: port :http服务器端口号 data :http数据

data : [{
      "type": "POST", // 请求方法
      "rote": "/test", // 路由
      "content": "这是一条测试 哈哈哈",
      "bodycontains": "", // body中包含的内容
      "urlcontains": "", // url中包含的内容
      "content-type": "application/json; charset=utf-8",
      "remark": "测试接口" // 备注
    },
    {
      "type": "GET",
      "rote": "/test", // 路由
      "content": "这是一条测试",
      "bodycontains": "",
      "urlcontains": "",
      "content-type": "application/json; charset=utf-8",
      "remark": "测试接口2"
    }]

关闭一个http服务器

方法名:closeHttpServer

参数: port :http服务器端口号

设置当前窗口

方法名:setWindow

参数: data: { "title": "OMRCC", //窗口标题 "backgroundColor": "#FFFFFF", //应用的背景颜色 "titleColor": "#000000", //应用的标题颜色 // 是否显示标题栏 "showTitleBar": true, // 是否显示状态栏 "showStatusBar": true, // 是否显示导航栏 "showNavigationBar": true, // 屏幕方向 "orientation": "landscape", }

显示toast

方法名:showToast

参数: message :toast消息

设置剪切板内容

方法名:setClipboard

参数: text :剪切板内容

获取剪切板内容

方法名:getClipboard

返回内容: text :剪切板内容

保存files目录下文件

方法名:saveFilesFile

参数: filename :文件名 data :文件内容

读取files目录下文件

方法名:readFilesFile

参数: filename :文件名 返回内容: text :文件内容

退出当前Activity

方法名:finish

参数:无 返回内容:无


本地HTTP文件交互

获取文件列表 /api/tree

接收参数: { "path": "string", // 可选,指定目录路径,默认为根目录,可以指定绝对路径和相对路径 "depth" : "number" // 可选,指定目录层级深度,默认为2 }

返回: { "code":200, "files": [ { "type": "file" | "directory", "name": "string", "path": "string", "children": [ ... ] // 仅当type为directory时存在 } ] }

获取文件内容 /api/read

接收参数: { "file_path": "string" // 必需,指定文件的路径,可以是绝对路径或相对路径 } 返回: { "code": 200, // 200表示成功 "content": "Uint8Array" // 文件内容的二进制base64编码 }

下载文件 /api/download?path=string

说明:GET请求,path可以是绝对路径或相对路径

获取盘符列表 /api/drives

说明:GET请求 Windows 响应: { "code": 200, "platform": "windows", "drives": [ { "path": "C:\", "type": "fixed", "name": "系统盘", "total": 512000000000, "free": 256000000000, "used": 256000000000 }, { "path": "D:\", "type": "fixed", "name": "数据盘", "total": 1024000000000, "free": 800000000000, "used": 224000000000 } ] }

Linux/macOS 响应: { "code": 200, "platform": "linux", "drives": [ { "path": "/", "type": "root", "name": "根目录", "total": 1024000000000, "free": 800000000000, "used": 224000000000 }, { "path": "/mnt/data", "type": "mount", "name": "数据挂载点", "total": 1024000000000, "free": 800000000000, "used": 224000000000 }, { "path": "/media/usb", "type": "media", "name": "USB 存储设备", "total": 128000000000, "free": 64000000000, "used": 64000000000 } ] }

写入文件内容 /api/write

接收参数: { "file_path": "string", // 必需,指定文件的路径,可以是绝对路径或相对路径 "content": "string" // 必需,文件内容 "coding": "string" // 可选,文件编码格式,默认为utf-8(可选gbk/utf-8/base64,当设置base64时,content应为base64编码字符串) } 返回: { "code": 200, // 200表示成功 "message": "string" // 相关信息或错误消息 }

编辑文件内容 /api/edit

接收参数: { "file_path": "string", // 必需,指定文件的路径,可以是绝对路径或相对路径 "old_string": "string", // 必需,要替换的旧字符串或正则表达式 "new_string": "string", // 必需,新的字符串 "replace_all": "boolean" // 可选,是否替换所有匹配项,默认为false }

返回: { "code": 200, // 200表示成功 "message": "string" // 相关信息或错误消息 }

删除文件或目录 /api/delete

接收参数: { "path": "string", // 必需,指定要删除的文件或目录路径 "recursive": "boolean" // 可选,是否递归删除目录,默认为false } 返回: { "code": 200, // 200表示成功 "message": "string" // 相关信息或错误消息 }

创建目录 /api/mkdir

接收参数: { "path": "string", // 必需,指定要创建的目录路径 "recursive": "boolean" // 可选,是否递归创建父目录,默认为false } 返回: { "code": 200, // 200表示成功 "message": "string" // 相关信息或错误消息 }

移动或重命名 /api/move

接收参数: { "source": "string", // 必需,源文件或目录路径 "destination": "string" // 必需,目标路径 } 返回: { "code": 200, // 200表示成功 "message": "string" // 相关信息或错误消息 }

复制文件或目录 /api/copy

接收参数: { "source": "string", // 必需,源文件或目录路径 "destination": "string", // 必需,目标路径 "recursive": "boolean" // 可选,是否递归复制目录,默认为false } 返回: { "code": 200, // 200表示成功 "message": "string" // 相关信息或错误消息 }

获取文件信息 /api/stat

接收参数: { "path": "string" // 必需,指定文件或目录路径 } 返回: { "code": 200, "info": { "type": "file" | "directory", "name": "string", "path": "string", "size": "number", // 文件大小(字节) "modified": "string", // 最后修改时间 "created": "string", // 创建时间 "isReadable": "boolean", "isWritable": "boolean" } }

检查路径是否存在 /api/exists

接收参数: { "path": "string" // 必需,指定要检查的路径 } 返回: { "code": 200, "exists": "boolean", "type": "file" | "directory" | null // 如果存在,返回类型 }

搜索文件 /api/search

接收参数: { "path": "string", // 可选,搜索的起始目录,默认为根目录 "pattern": "string", // 必需,搜索模式(支持通配符*和?) "content": "string", // 可选,搜索文件内容 "maxResults": "number" // 可选,最大结果数,默认为100 } 返回: { "code": 200, "results": [ { "type": "file" | "directory", "name": "string", "path": "string", "size": "number" } ] }

获取AI提示词 /api/prompts

请求类型:GET 返回: { "code": 200, "content": "" //提示词内容 }

发表评论

邮箱地址不会被公开。 必填项已用*标注