YYPOST群发软件 发表于 2026-3-20 06:56:20

安卓H5互动config配置调取存示例

安卓H5互动config配置调取存示例






<!DOCTYPE html>
<!--
&#127822;交流 QQ 群:711841924(群一 - 苹果内测群)
&#127822;交流 QQ 群:528816639
&#127822; AIWROK 配置管理器 - 可视化配置界面
-->
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <title>⚙️ AIWROK 配置管理中心</title>
    <style>
      * { margin: 0; padding: 0; box-sizing: border-box; }
      
      :root {
            --primary: #4A90E2;
            --primary-dark: #357ABD;
            --success: #2ECC71;
            --warning: #F39C12;
            --danger: #E74C3C;
            --purple: #9B59B6;
            --bg-dark: #1a1a2e;
            --bg-card: #16213e;
            --bg-input: #0f0f23;
            --text-primary: #ffffff;
            --text-secondary: #a0a0a0;
            --border-color: rgba(255, 255, 255, 0.1);
      }

      body {
            font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
            background: linear-gradient(135deg, var(--bg-dark) 0%, var(--bg-card) 50%, #0f0f23 100%);
            color: var(--text-primary);
            min-height: 100vh;
            overflow-x: hidden;
      }

      /* QQ 群信息栏 */
      .qq-group-bar {
            background: linear-gradient(90deg, #FF6B6B 0%, #FF8E53 50%, #FFD700 100%);
            padding: 10px 16px;
            text-align: center;
            position: relative;
            z-index: 20;
            box-shadow: 0 2px 10px rgba(0,0,0,0.3);
      }

      .qq-group-text {
            font-size: 13px;
            font-weight: 700;
            color: #fff;
            text-shadow: 1px 1px 2px rgba(0,0,0,0.3);
      }

      .app-container {
            position: relative;
            z-index: 10;
            max-width: 600px;
            margin: 0 auto;
            padding: 16px;
      }

      /* 顶部标题 */
      .header {
            background: linear-gradient(135deg, var(--primary) 0%, var(--purple) 100%);
            border-radius: 20px;
            padding: 24px;
            margin-bottom: 20px;
            box-shadow: 0 10px 40px rgba(74, 144, 226, 0.3);
            text-align: center;
      }

      .header-icon {
            font-size: 48px;
            margin-bottom: 8px;
      }

      .header-title {
            font-size: 24px;
            font-weight: 800;
            margin-bottom: 4px;
      }

      .header-subtitle {
            font-size: 13px;
            opacity: 0.9;
      }

      /* 统计卡片 */
      .stats-row {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 12px;
            margin-bottom: 20px;
      }

      .stat-box {
            background: var(--bg-card);
            border-radius: 16px;
            padding: 16px 8px;
            text-align: center;
            border: 1px solid rgba(74, 144, 226, 0.2);
      }

      .stat-icon {
            font-size: 24px;
            margin-bottom: 4px;
      }

      .stat-value {
            font-size: 20px;
            font-weight: 800;
            color: var(--primary);
      }

      .stat-label {
            font-size: 11px;
            color: var(--text-secondary);
            margin-top: 2px;
      }

      /* 分类标签 */
      .category-tabs {
            display: flex;
            gap: 8px;
            margin-bottom: 20px;
            overflow-x: auto;
            padding-bottom: 8px;
      }

      .category-tab {
            padding: 10px 20px;
            background: var(--bg-card);
            border: 1px solid var(--border-color);
            border-radius: 25px;
            font-size: 13px;
            font-weight: 600;
            color: var(--text-secondary);
            cursor: pointer;
            white-space: nowrap;
            transition: all 0.3s ease;
      }

      .category-tab:hover {
            border-color: var(--primary);
            color: var(--primary);
      }

      .category-tab.active {
            background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
            color: white;
            border-color: transparent;
            box-shadow: 0 4px 12px rgba(74, 144, 226, 0.3);
      }

      /* 配置列表 */
      .config-section {
            background: var(--bg-card);
            border-radius: 20px;
            padding: 20px;
            margin-bottom: 20px;
            border: 1px solid var(--border-color);
      }

      .section-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 16px;
            padding-bottom: 12px;
            border-bottom: 1px solid var(--border-color);
      }

      .section-title {
            display: flex;
            align-items: center;
            gap: 10px;
            font-size: 16px;
            font-weight: 700;
      }

      .section-icon {
            font-size: 20px;
      }

      .section-actions {
            display: flex;
            gap: 8px;
      }

      .action-btn {
            padding: 6px 12px;
            border: none;
            border-radius: 8px;
            font-size: 12px;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.2s ease;
      }

      .btn-reset {
            background: rgba(231, 76, 60, 0.2);
            color: var(--danger);
      }

      .btn-reset:hover {
            background: rgba(231, 76, 60, 0.3);
      }

      .btn-save {
            background: rgba(46, 204, 113, 0.2);
            color: var(--success);
      }

      .btn-save:hover {
            background: rgba(46, 204, 113, 0.3);
      }

      /* 配置项 */
      .config-item {
            margin-bottom: 16px;
            padding-bottom: 16px;
            border-bottom: 1px solid rgba(255, 255, 255, 0.05);
      }

      .config-item:last-child {
            margin-bottom: 0;
            padding-bottom: 0;
            border-bottom: none;
      }

      .config-label {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 8px;
      }

      .label-text {
            font-size: 14px;
            font-weight: 600;
            display: flex;
            align-items: center;
            gap: 8px;
      }

      .label-hint {
            font-size: 11px;
            color: var(--text-secondary);
            font-weight: normal;
      }

      .config-input-wrapper {
            position: relative;
      }

      .config-input {
            width: 100%;
            padding: 12px 16px;
            border: 1px solid var(--border-color);
            border-radius: 10px;
            background: var(--bg-input);
            color: var(--text-primary);
            font-size: 14px;
            outline: none;
            transition: all 0.3s ease;
      }

      .config-input:focus {
            border-color: var(--primary);
            box-shadow: 0 0 10px rgba(74, 144, 226, 0.2);
      }

      .config-input.readonly {
            background: rgba(255, 255, 255, 0.05);
            cursor: not-allowed;
      }

      /* 开关 */
      .switch {
            position: relative;
            width: 50px;
            height: 26px;
      }

      .switch input {
            opacity: 0;
            width: 0;
            height: 0;
      }

      .slider {
            position: absolute;
            cursor: pointer;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background-color: #333;
            transition: .4s;
            border-radius: 26px;
      }

      .slider:before {
            position: absolute;
            content: "";
            height: 20px;
            width: 20px;
            left: 3px;
            bottom: 3px;
            background-color: white;
            transition: .4s;
            border-radius: 50%;
      }

      input:checked + .slider {
            background: linear-gradient(135deg, var(--success) 0%, #27AE60 100%);
      }

      input:checked + .slider:before {
            transform: translateX(24px);
      }

      /* 按钮组 */
      .button-group {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 12px;
            margin-top: 20px;
      }

      .main-btn {
            padding: 16px;
            border: none;
            border-radius: 16px;
            font-size: 16px;
            font-weight: 800;
            cursor: pointer;
            transition: all 0.3s ease;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
      }

      .btn-primary {
            background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
            color: white;
            box-shadow: 0 8px 32px rgba(74, 144, 226, 0.4);
      }

      .btn-primary:hover {
            transform: translateY(-2px);
            box-shadow: 0 12px 40px rgba(74, 144, 226, 0.5);
      }

      .btn-secondary {
            background: linear-gradient(135deg, var(--purple) 0%, #8E44AD 100%);
            color: white;
            box-shadow: 0 8px 32px rgba(155, 89, 182, 0.4);
      }

      .btn-warning {
            background: linear-gradient(135deg, var(--warning) 0%, #E67E22 100%);
            color: white;
            box-shadow: 0 8px 32px rgba(243, 156, 18, 0.4);
      }

      .btn-danger {
            background: linear-gradient(135deg, var(--danger) 0%, #C0392B 100%);
            color: white;
            box-shadow: 0 8px 32px rgba(231, 76, 60, 0.4);
      }

      /* Toast */
      .toast {
            position: fixed;
            bottom: 100px;
            left: 50%;
            transform: translateX(-50%) translateY(100px);
            background: linear-gradient(135deg, var(--success) 0%, #27AE60 100%);
            color: white;
            padding: 16px 32px;
            border-radius: 50px;
            font-weight: 700;
            opacity: 0;
            transition: all 0.3s ease;
            z-index: 9999;
            box-shadow: 0 8px 32px rgba(46, 204, 113, 0.4);
      }

      .toast.show {
            opacity: 1;
            transform: translateX(-50%) translateY(0);
      }

      .toast.error {
            background: linear-gradient(135deg, var(--danger) 0%, #C0392B 100%);
      }

      /* 日志窗口 */
      .log-panel {
            background: var(--bg-card);
            border-radius: 20px;
            padding: 20px;
            margin-top: 20px;
            border: 1px solid var(--border-color);
      }

      .log-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 16px;
      }

      .log-title {
            display: flex;
            align-items: center;
            gap: 10px;
            font-size: 16px;
            font-weight: 700;
      }

      .log-container {
            background: var(--bg-input);
            border-radius: 12px;
            padding: 12px;
            max-height: 300px;
            overflow-y: auto;
            font-family: 'SF Mono', 'Monaco', 'Menlo', monospace;
            font-size: 12px;
            line-height: 1.8;
      }

      .log-entry {
            padding: 4px 8px;
            margin-bottom: 4px;
            border-radius: 4px;
            border-left: 3px solid var(--primary);
      }

      .log-entry.success { border-left-color: var(--success); }
      .log-entry.error { border-left-color: var(--danger); }
      .log-entry.warning { border-left-color: var(--warning); }

      /* 动画 */
      @keyframes slideUp {
            from { opacity: 0; transform: translateY(20px); }
            to { opacity: 1; transform: translateY(0); }
      }

      .config-section {
            animation: slideUp 0.4s ease;
      }
    </style>
</head>
<body>
    <!-- QQ 群信息栏 -->
    <div class="qq-group-bar">
      <span class="qq-group-text">&#127822;交流 QQ 群:711841924(群一 - 苹果内测群)528816639</span>
    </div>

    <div class="app-container">
      <!-- 顶部标题 -->
      <div class="header">
            <div class="header-icon">⚙️</div>
            <div class="header-title">AIWROK 配置管理中心</div>
            <div class="header-subtitle">可视化配置管理 · 实时同步 · 智能推荐</div>
      </div>

      <!-- 统计卡片 -->
      <div class="stats-row">
            <div class="stat-box">
                <div class="stat-icon">&#128202;</div>
                <div class="stat-value" id="totalConfigs">0</div>
                <div class="stat-label">总配置数</div>
            </div>
            <div class="stat-box">
                <div class="stat-icon">✅</div>
                <div class="stat-value" id="configuredCount">0</div>
                <div class="stat-label">已配置</div>
            </div>
            <div class="stat-box">
                <div class="stat-icon">&#128190;</div>
                <div class="stat-value" id="lastSaveTime">-</div>
                <div class="stat-label">最后保存</div>
            </div>
      </div>

      <!-- 分类标签 -->
      <div class="category-tabs">
            <div class="category-tab active" data-category="all" onclick="filterCategory('all')">全部</div>
            <div class="category-tab" data-category="game" onclick="filterCategory('game')">&#127918; 游戏配置</div>
            <div class="category-tab" data-category="ocr" onclick="filterCategory('ocr')">&#128269; OCR 配置</div>
            <div class="category-tab" data-category="ui" onclick="filterCategory('ui')">&#127912; UI 配置</div>
            <div class="category-tab" data-category="network" onclick="filterCategory('network')">&#127760; 网络配置</div>
      </div>

      <!-- 游戏配置 -->
      <div class="config-section" data-category="game">
            <div class="section-header">
                <div class="section-title">
                  <span class="section-icon">&#127918;</span>
                  <span>游戏自动化配置</span>
                </div>
                <div class="section-actions">
                  <button class="action-btn btn-reset" onclick="resetGameConfig()">重置</button>
                  <button class="action-btn btn-save" onclick="saveGameConfig()">保存</button>
                </div>
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">
                        &#128221; 游戏名称
                        <span class="label-hint">要自动化的游戏</span>
                  </span>
                </div>
                <input type="text" class="config-input" id="game_name" value="梦幻西游" placeholder="输入游戏名称">
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">
                        ⏱️ 任务延迟 (毫秒)
                        <span class="label-hint">操作间隔时间</span>
                  </span>
                </div>
                <input type="number" class="config-input" id="task_delay" value="2000" min="500" max="10000">
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">
                        &#128260; 最大轮数
                        <span class="label-hint">最多执行轮次</span>
                  </span>
                </div>
                <input type="number" class="config-input" id="max_rounds" value="10" min="1" max="100">
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">⚔️ 启用自动战斗</span>
                  <label class="switch">
                        <input type="checkbox" id="enable_combat" checked>
                        <span class="slider"></span>
                  </label>
                </div>
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">&#128138; 自动治疗</span>
                  <label class="switch">
                        <input type="checkbox" id="auto_heal" checked>
                        <span class="slider"></span>
                  </label>
                </div>
            </div>
      </div>

      <!-- OCR 配置 -->
      <div class="config-section" data-category="ocr">
            <div class="section-header">
                <div class="section-title">
                  <span class="section-icon">&#128269;</span>
                  <span>OCR 识别配置</span>
                </div>
                <div class="section-actions">
                  <button class="action-btn btn-reset" onclick="resetOcrConfig()">重置</button>
                  <button class="action-btn btn-save" onclick="saveOcrConfig()">保存</button>
                </div>
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">
                        &#127760; 识别语言
                        <span class="label-hint">OCR 识别语言</span>
                  </span>
                </div>
                <select class="config-input" id="ocr_language">
                  <option value="zh-CN">简体中文</option>
                  <option value="zh-TW">繁体中文</option>
                  <option value="en">英文</option>
                  <option value="ja">日文</option>
                  <option value="ko">韩文</option>
                </select>
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">
                        &#127919; 置信度阈值 (%)
                        <span class="label-hint">最低识别置信度</span>
                  </span>
                </div>
                <input type="number" class="config-input" id="ocr_confidence" value="80" min="50" max="100">
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">
                        ⏰ 超时时间 (毫秒)
                        <span class="label-hint">识别超时限制</span>
                  </span>
                </div>
                <input type="number" class="config-input" id="ocr_timeout" value="5000" min="1000" max="30000">
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">&#128260; 重试次数</span>
                  <label class="switch">
                        <input type="number" class="config-input" id="ocr_retry" value="3" min="0" max="10" style="width: 100px; display: inline-block;">
                  </label>
                </div>
            </div>
      </div>

      <!-- UI 配置 -->
      <div class="config-section" data-category="ui">
            <div class="section-header">
                <div class="section-title">
                  <span class="section-icon">&#127912;</span>
                  <span>界面偏好配置</span>
                </div>
                <div class="section-actions">
                  <button class="action-btn btn-reset" onclick="resetUiConfig()">重置</button>
                  <button class="action-btn btn-save" onclick="saveUiConfig()">保存</button>
                </div>
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">&#127763; 主题模式</span>
                  <select class="config-input" id="ui_theme" style="width: 150px;">
                        <option value="dark">深色主题</option>
                        <option value="light">浅色主题</option>
                        <option value="auto">自动跟随</option>
                  </select>
                </div>
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">
                        &#128207; 字体大小 (px)
                        <span class="label-hint">界面字体大小</span>
                  </span>
                </div>
                <input type="number" class="config-input" id="ui_font_size" value="16" min="12" max="24">
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">&#129520; 显示工具栏</span>
                  <label class="switch">
                        <input type="checkbox" id="ui_show_toolbar" checked>
                        <span class="slider"></span>
                  </label>
                </div>
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">✨ 启用动画效果</span>
                  <label class="switch">
                        <input type="checkbox" id="ui_animation" checked>
                        <span class="slider"></span>
                  </label>
                </div>
            </div>
      </div>

      <!-- 网络配置 -->
      <div class="config-section" data-category="network">
            <div class="section-header">
                <div class="section-title">
                  <span class="section-icon">&#127760;</span>
                  <span>网络请求配置</span>
                </div>
                <div class="section-actions">
                  <button class="action-btn btn-reset" onclick="resetNetworkConfig()">重置</button>
                  <button class="action-btn btn-save" onclick="saveNetworkConfig()">保存</button>
                </div>
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">
                        &#128279; API 基础地址
                        <span class="label-hint">服务器地址</span>
                  </span>
                </div>
                <input type="text" class="config-input" id="network_base_url" value="https://api.example.com" placeholder="https://api.example.com">
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">
                        &#128225; API 版本
                        <span class="label-hint">API 版本号</span>
                  </span>
                </div>
                <input type="text" class="config-input" id="network_version" value="v2" placeholder="v2">
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">
                        ⏰ 请求超时 (毫秒)
                        <span class="label-hint">网络请求超时</span>
                  </span>
                </div>
                <input type="number" class="config-input" id="network_timeout" value="10000" min="5000" max="60000">
            </div>

            <div class="config-item">
                <div class="config-label">
                  <span class="label-text">&#128260; 最大重试次数</span>
                  <input type="number" class="config-input" id="network_retries" value="3" min="0" max="10" style="width: 100px; display: inline-block;">
                </div>
            </div>
      </div>

      <!-- 操作按钮组 -->
      <div class="button-group">
            <button class="main-btn btn-primary" onclick="saveAllConfigs()">
                &#128190; 保存所有配置
            </button>
            <button class="main-btn btn-secondary" onclick="exportConfigs()">
                &#128228; 导出配置
            </button>
            <button class="main-btn btn-warning" onclick="importConfigs()">
                &#128229; 导入配置
            </button>
            <button class="main-btn btn-danger" onclick="resetAllConfigs()">
                &#128465;️ 恢复默认
            </button>
      </div>

      <!-- 日志窗口 -->
      <div class="log-panel">
            <div class="log-header">
                <div class="log-title">
                  <span class="section-icon">&#128203;</span>
                  <span>操作日志</span>
                </div>
            </div>
            <div class="log-container" id="logContainer">
                <div class="log-empty" style="text-align: center; padding: 20px; color: #666;">
                  等待操作...
                </div>
            </div>
      </div>
    </div>

    <!-- Toast -->
    <div class="toast" id="toast"></div>

    <script>
      // ============================================
      // AIWROK 配置管理中心 - 核心逻辑
      // ============================================
      
      var CONFIG = {
            VERSION: '1.0.0'
      };

      var state = {
            totalConfigs: 0,
            configuredCount: 0,
            lastSaveTime: null,
            logs: []
      };

      // 默认配置值
      var defaultConfigs = {
            // 游戏配置
            game_name: "梦幻西游",
            task_delay: "2000",
            max_rounds: "10",
            enable_combat: "true",
            auto_heal: "true",
            
            // OCR 配置
            ocr_language: "zh-CN",
            ocr_confidence: "80",
            ocr_timeout: "5000",
            ocr_retry: "3",
            
            // UI 配置
            ui_theme: "dark",
            ui_font_size: "16",
            ui_show_toolbar: "true",
            ui_animation: "true",
            
            // 网络配置
            network_base_url: "https://api.example.com",
            network_version: "v2",
            network_timeout: "10000",
            network_retries: "3"
      };

      // 初始化
      document.addEventListener('DOMContentLoaded', function() {
            addLog('⚙️ AIWROK 配置管理中心 v' + CONFIG.VERSION + ' 已启动', 'success');
            loadAllConfigs();
            updateStats();
      });

      // 添加日志
      function addLog(message, type) {
            type = type || 'info';
            var container = document.getElementById('logContainer');
            
            // 移除空状态
            var emptyState = container.querySelector('.log-empty');
            if (emptyState) emptyState.remove();
            
            var entry = document.createElement('div');
            entry.className = 'log-entry ' + type;
            entry.textContent = '[' + new Date().toLocaleTimeString() + '] ' + message;
            
            container.appendChild(entry);
            container.scrollTop = container.scrollHeight;
            
            // 限制日志数量
            while (container.children.length > 50) {
                container.removeChild(container.firstChild);
            }
      }

      // 更新统计
      function updateStats() {
            document.getElementById('totalConfigs').textContent = Object.keys(defaultConfigs).length;
            document.getElementById('configuredCount').textContent = state.configuredCount;
            
            if (state.lastSaveTime) {
                var time = new Date(state.lastSaveTime);
                document.getElementById('lastSaveTime').textContent =
                  time.getHours().toString().padStart(2, '0') + ':' +
                  time.getMinutes().toString().padStart(2, '0');
            }
      }

      // 过滤分类
      function filterCategory(category) {
            // 更新标签状态
            var tabs = document.querySelectorAll('.category-tab');
            for (var i = 0; i < tabs.length; i++) {
                tabs.classList.toggle('active', tabs.dataset.category === category);
            }
            
            // 过滤配置区块
            var sections = document.querySelectorAll('.config-section');
            for (var j = 0; j < sections.length; j++) {
                var section = sections;
                if (category === 'all' || section.dataset.category === category) {
                  section.style.display = 'block';
                } else {
                  section.style.display = 'none';
                }
            }
            
            addLog('&#128194; 切换到分类:' + category, 'info');
      }

      // 加载配置
      function loadAllConfigs() {
            addLog('&#128229; 正在加载配置...', 'info');
            
            // 尝试从原生环境加载
            for (var key in defaultConfigs) {
                var element = document.getElementById(key);
                if (!element) continue;
               
                var value = getConfigFromNative(key);
                if (value !== null && value !== undefined && value !== '') {
                  if (element.type === 'checkbox') {
                        element.checked = value === 'true';
                  } else {
                        element.value = value;
                  }
                  state.configuredCount++;
                } else {
                  if (element.type === 'checkbox') {
                        element.checked = defaultConfigs === 'true';
                  } else {
                        element.value = defaultConfigs;
                  }
                }
            }
            
            addLog('✅ 配置加载完成', 'success');
            updateStats();
      }

      // 从原生环境获取配置(适配 AIWROK)
      function getConfigFromNative(key) {
            // 优先使用 Android 桥接接口
            if (window.android && typeof window.android.getConfig === 'function') {
                try {
                  var value = window.android.getConfig(key, '');
                  console.log('从 android 接口获取配置 ' + key + ': ' + value);
                  return value;
                } catch (e) {
                  console.error('android 接口获取配置失败:', e);
                }
            }
            // 浏览器环境使用 localStorage 模拟
            try {
                return localStorage.getItem('AIWROK_' + key);
            } catch (e) {
                return null;
            }
      }

      // 设置配置到原生环境(适配 AIWROK)
      function setConfigToNative(key, value) {
            // 优先使用 Android 桥接接口
            if (window.android && typeof window.android.setConfig === 'function') {
                try {
                  var result = window.android.setConfig(key, value);
                  console.log('设置配置 ' + key + ' = ' + value + ': ' + (result ? '成功' : '失败'));
                  return result;
                } catch (e) {
                  console.error('设置配置失败:', e);
                  return false;
                }
            }
            // 浏览器环境使用 localStorage 模拟
            try {
                localStorage.setItem('AIWROK_' + key, value);
                return true;
            } catch (e) {
                return false;
            }
      }

      // 保存单个分类的配置
      function saveCategoryConfig(category, configKeys) {
            addLog('&#128190; 正在保存' + category + '配置...', 'info');
            
            for (var i = 0; i < configKeys.length; i++) {
                var key = configKeys;
                var element = document.getElementById(key);
                if (!element) continue;
               
                var value;
                if (element.type === 'checkbox') {
                  value = element.checked ? 'true' : 'false';
                } else {
                  value = element.value;
                }
               
                setConfigToNative(key, value);
                addLog('✓ ' + key + ' = ' + value, 'success');
            }
            
            state.lastSaveTime = Date.now();
            state.configuredCount = Object.keys(defaultConfigs).length;
            updateStats();
            
            showToast('✅ ' + category + '配置已保存');
      }

      // 各个分类的保存函数
      function saveGameConfig() {
            saveCategoryConfig('游戏', ['game_name', 'task_delay', 'max_rounds', 'enable_combat', 'auto_heal']);
      }

      function saveOcrConfig() {
            saveCategoryConfig('OCR', ['ocr_language', 'ocr_confidence', 'ocr_timeout', 'ocr_retry']);
      }

      function saveUiConfig() {
            saveCategoryConfig('UI', ['ui_theme', 'ui_font_size', 'ui_show_toolbar', 'ui_animation']);
      }

      function saveNetworkConfig() {
            saveCategoryConfig('网络', ['network_base_url', 'network_version', 'network_timeout', 'network_retries']);
      }

      // 保存所有配置
      function saveAllConfigs() {
            addLog('&#128190; 正在保存所有配置...', 'info');
            
            for (var key in defaultConfigs) {
                var element = document.getElementById(key);
                if (!element) continue;
               
                var value;
                if (element.type === 'checkbox') {
                  value = element.checked ? 'true' : 'false';
                } else {
                  value = element.value;
                }
               
                setConfigToNative(key, value);
            }
            
            state.lastSaveTime = Date.now();
            state.configuredCount = Object.keys(defaultConfigs).length;
            updateStats();
            
            addLog('✅ 所有配置已保存', 'success');
            showToast('✅ 所有配置已保存');
      }

      // 重置配置
      function resetCategoryConfig(category, configKeys, displayName) {
            addLog('&#128465;️ 正在重置' + displayName + '配置...', 'warning');
            
            for (var i = 0; i < configKeys.length; i++) {
                var key = configKeys;
                var element = document.getElementById(key);
                if (!element) continue;
               
                var defaultValue = defaultConfigs;
                if (element.type === 'checkbox') {
                  element.checked = defaultValue === 'true';
                } else {
                  element.value = defaultValue;
                }
               
                addLog('✓ ' + key + ' 恢复为:' + defaultValue, 'info');
            }
            
            showToast('&#128465;️ ' + displayName + '配置已重置');
      }

      function resetGameConfig() {
            resetCategoryConfig('游戏', ['game_name', 'task_delay', 'max_rounds', 'enable_combat', 'auto_heal'], '游戏');
      }

      function resetOcrConfig() {
            resetCategoryConfig('OCR', ['ocr_language', 'ocr_confidence', 'ocr_timeout', 'ocr_retry'], 'OCR');
      }

      function resetUiConfig() {
            resetCategoryConfig('UI', ['ui_theme', 'ui_font_size', 'ui_show_toolbar', 'ui_animation'], 'UI');
      }

      function resetNetworkConfig() {
            resetCategoryConfig('网络', ['network_base_url', 'network_version', 'network_timeout', 'network_retries'], '网络');
      }

      function resetAllConfigs() {
            if (!confirm('确定要恢复所有配置为默认值吗?')) return;
            
            addLog('&#128465;️ 正在恢复所有配置...', 'warning');
            
            for (var key in defaultConfigs) {
                var element = document.getElementById(key);
                if (!element) continue;
               
                var defaultValue = defaultConfigs;
                if (element.type === 'checkbox') {
                  element.checked = defaultValue === 'true';
                } else {
                  element.value = defaultValue;
                }
            }
            
            addLog('✅ 所有配置已恢复默认值', 'success');
            showToast('&#128465;️ 所有配置已恢复默认');
      }

      // 导出配置
      function exportConfigs() {
            addLog('&#128228; 正在导出配置...', 'info');
            
            var exported = {};
            for (var key in defaultConfigs) {
                var element = document.getElementById(key);
                if (!element) continue;
               
                var value;
                if (element.type === 'checkbox') {
                  value = element.checked ? 'true' : 'false';
                } else {
                  value = element.value;
                }
               
                exported = value;
            }
            
            var jsonStr = JSON.stringify(exported, null, 2);
            addLog('✅ 配置已导出:\n' + jsonStr, 'success');
            
            // 尝试复制到剪贴板
            if (navigator.clipboard) {
                navigator.clipboard.writeText(jsonStr).then(function() {
                  showToast('&#128228; 配置已导出并复制到剪贴板');
                }, function() {
                  showToast('&#128228; 配置已导出(请查看日志)');
                });
            } else {
                showToast('&#128228; 配置已导出(请查看日志)');
            }
      }

      // 导入配置
      function importConfigs() {
            var jsonStr = prompt('请粘贴配置 JSON 数据:');
            if (!jsonStr) return;
            
            try {
                var imported = JSON.parse(jsonStr);
                addLog('&#128229; 正在导入配置...', 'info');
               
                for (var key in imported) {
                  var element = document.getElementById(key);
                  if (!element) continue;
                  
                  var value = imported;
                  if (element.type === 'checkbox') {
                        element.checked = value === 'true';
                  } else {
                        element.value = String(value);
                  }
                  
                  addLog('✓ 导入 ' + key + ' = ' + value, 'success');
                }
               
                addLog('✅ 配置导入完成', 'success');
                showToast('&#128229; 配置已成功导入');
            } catch (e) {
                addLog('❌ 配置导入失败:' + e.message, 'error');
                showToast('❌ 配置格式错误');
            }
      }

      // 显示 Toast
      function showToast(message, isError) {
            var toast = document.getElementById('toast');
            toast.textContent = message;
            toast.className = 'toast show' + (isError ? ' error' : '');
            
            setTimeout(function() {
                toast.className = 'toast';
            }, 3000);
      }
    </script>
</body>
</html>




//初始化一个activity页面
//&#127822;交流QQ群711841924群一,苹果内测群,528816639
var ac = new activity();
ac.loadXML(`
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
>

   

    <WebView
      android:id="@+id/web"
      android:layout_width="match_parent"
      android:layout_height="0dp"
      android:layout_weight="1" />

</LinearLayout>
`);

sleep.millisecond(400);

// 获取 WebView 组件
var web1 = ac.findWebViewById('web');

// 加载本地 HTML 文件(使用绝对路径)
web1.url('/代码/h5.html');

// 三秒倒计时
printl("\n3 秒后启动...");
for (var i = 3; i > 0; i--) {
    printl(i + "...");
    sleep.millisecond(1000);
}
printl("启动完成!\n");
Import("主脚本.js");

页: [1]
查看完整版本: 安卓H5互动config配置调取存示例