YYPOST群发软件 发表于 2025-12-4 09:40:08

AIWORK软件配置读写H5演示配套脚本

AIWORK软件配置读写H5演示配套脚本








//🍎交流QQ群711841924群一,苹果内测群,528816639
// AIWROK配置读写H5演示配套脚本
// 本文件提供了详细的配置读写示例和说明,与config_h5_demo.html配合使用
// 注意:此代码需在AIWROK环境中运行,因为config对象由AIWROK提供

// 修复window.onload与window.onLoad的兼容性问题
// AIWROK环境使用onLoad(大写L),而标准浏览器使用onload(小写l)
if (typeof window !== 'undefined') {
    // 安全地检查window.onLoad和window.onload
    try {
      var hasOnLoad = typeof window.onLoad === 'function';
      var hasOnload = typeof window.onload === 'function';
      
      if (hasOnLoad && !hasOnload) {
            // 如果存在window.onLoad但不存在window.onload,则创建window.onload的别名
            window.onload = window.onLoad;
      }
    } catch (e) {
      // 忽略任何错误
    }
   
    // 安全地处理AIWROK特定的Windows对象(大写W)
    try {
      if (typeof window.Windows !== 'undefined') {
            // 使用try-catch安全访问Java对象的属性
            window.Windows.onload = function(callback) {
                if (typeof window.Windows.onLoad === 'function') {
                  window.Windows.onLoad(callback);
                }
            };
      }
    } catch (e) {
      // 忽略任何错误
    }
}

// 配置文件路径常量
var CONFIG_FILE_PATH = '/sdcard/aiwrok_h5_config.ini';

/**
* 检查AIWROK环境是否可用
*/
function checkAIWROKEnvironment() {
    var isAIWROKEnvironment = typeof config !== 'undefined' &&
                           typeof config.setConfig === 'function' &&
                           typeof config.getConfig === 'function';
   
    if (!isAIWROKEnvironment) {
      printl('⚠️ 错误:当前环境不是AIWROK环境,config对象不可用!');
      printl('请确保在AIWROK环境中运行此脚本。');
      return false;
    }
   
    // 检查文件系统访问权限(尝试写入一个简单的配置项来测试)
    try {
      config.setConfig(CONFIG_FILE_PATH, '_test_access', '1');
      config.getConfig(CONFIG_FILE_PATH, '_test_access', '0');
      config.setConfig(CONFIG_FILE_PATH, '_test_access', ''); // 清理测试项
      return true;
    } catch (e) {
      printl('⚠️ 错误:无法访问配置文件路径!');
      printl('错误信息:' + e.message);
      printl('请检查是否有文件系统访问权限,以及路径是否正确。');
      return false;
    }
}

/**
* 主函数:执行配置读写演示
*/
function runConfigDemo() {
    printl('===== AIWROK配置读写H5演示配套脚本 =====');
    printl('本脚本与config_h5_demo.html配合使用,展示配置读写的详细功能');
   
    // 检查AIWROK环境
    if (!checkAIWROKEnvironment()) {
      printl('\n===== 演示失败:环境检查未通过 =====');
      return;
    }
   
    printl('\n✅ 环境检查通过,开始演示...');
   
    // 演示基本功能
    demonstrateBasicFunctions();
   
    // 演示高级功能
    demonstrateAdvancedFunctions();
   
    // 演示错误处理
    demonstrateErrorHandling();
   
    // 演示H5集成功能
    h5IntegrationHelpers();
   
    printl('\n===== 演示完成 =====');
   
    // 将提示信息移到函数内部,在演示过程中显示
    printl('\n提示:在实际使用中,请确保有正确的文件系统访问权限,并根据您的实际需求修改配置文件路径和配置项。');
    printl('本脚本可以独立运行,也可以与config_h5_demo.html配合使用。');
}

/**
* 演示基本配置读写功能
*/
function demonstrateBasicFunctions() {
    printl('\n1. 基本配置读写功能演示:');
   
    try {
      // 写入配置示例
      printl('   写入配置示例:');
      
      // 写入字符串配置
      printl('   - 准备写入: demo_name = 中文H5配置演示');
      var result1 = config.setConfig(CONFIG_FILE_PATH, 'demo_name', '中文H5配置演示');
      printl('   - 写入结果: ' + (result1 ? '成功' : '失败'));
      
      // 写入数字配置
      printl('   - 准备写入: demo_version = 1.0.0');
      var result2 = config.setConfig(CONFIG_FILE_PATH, 'demo_version', '1.0.0');
      printl('   - 写入结果: ' + (result2 ? '成功' : '失败'));
      
      // 写入布尔配置
      printl('   - 准备写入: demo_enabled = true');
      var result3 = config.setConfig(CONFIG_FILE_PATH, 'demo_enabled', 'true');
      printl('   - 写入结果: ' + (result3 ? '成功' : '失败'));
      
      // 读取配置示例
      printl('\n   读取配置示例:');
      
      var demoName = config.getConfig(CONFIG_FILE_PATH, 'demo_name', 'Default_Demo');
      printl('   - 读取demo_name: ' + demoName + (demoName === '中文H5配置演示' ? ' (正确)' : ' (错误)'));
      
      var demoVersion = config.getConfig(CONFIG_FILE_PATH, 'demo_version', '0.0.1');
      printl('   - 读取demo_version: ' + demoVersion + (demoVersion === '1.0.0' ? ' (正确)' : ' (错误)'));
      
      var demoEnabled = config.getConfig(CONFIG_FILE_PATH, 'demo_enabled', 'false');
      printl('   - 读取demo_enabled: ' + demoEnabled + (demoEnabled === 'true' ? ' (正确)' : ' (错误)'));
      
      // 使用默认值读取不存在的配置
      var nonExistent = config.getConfig(CONFIG_FILE_PATH, 'non_existent_key', 'default_value');
      printl('   - 读取不存在的配置(使用默认值): ' + nonExistent);
      
    } catch (e) {
      printl('   基本功能演示出错: ' + e.message);
      console.error('基本功能演示出错: ', e);
    }
}

/**
* 演示高级配置功能
*/
function demonstrateAdvancedFunctions() {
    printl('\n2. 高级配置功能演示:');
   
    // 创建配置管理器实例
    var configManager = new ConfigManager(CONFIG_FILE_PATH);
   
    try {
      // 使用配置管理器写入配置
      printl('   使用配置管理器写入配置:');
      
      configManager.set('user_name', '测试用户');
      printl('   - 已写入user_name: 测试用户');
      
      configManager.set('user_age', 25);
      printl('   - 已写入user_age: 25');
      
      configManager.set('user_active', true);
      printl('   - 已写入user_active: true');
      
      // 使用配置管理器读取配置
      printl('\n   使用配置管理器读取配置:');
      
      var userName = configManager.get('user_name', 'default_user');
      printl('   - 读取user_name: ' + userName);
      
      var userAge = configManager.getNumber('user_age', 18);
      printl('   - 读取user_age(数字类型): ' + userAge + ' (类型: ' + typeof userAge + ')');
      
      var userActive = configManager.getBoolean('user_active', false);
      printl('   - 读取user_active(布尔类型): ' + userActive + ' (类型: ' + typeof userActive + ')');
      
      // 配置批量操作示例
      printl('\n   配置批量操作示例:');
      
      var batchConfig = {
            'app_name': 'AIWROK_H5_Demo',
            'app_author': 'AIWROK_Team',
            'app_date': getCurrentDate()
      };
      
      // 批量写入
      for (var key in batchConfig) {
            if (batchConfig.hasOwnProperty(key)) {
                configManager.set(key, batchConfig);
                printl('   - 批量写入: ' + key + ' = ' + batchConfig);
            }
      }
      
      // 批量读取
      var keys = ['app_name', 'app_author', 'app_date'];
      printl('\n   批量读取:');
      for (var i = 0; i < keys.length; i++) {
            var value = configManager.get(keys, '未设置');
            printl('       ' + keys + ': ' + value);
      }
      
    } catch (e) {
      printl('   高级功能演示出错: ' + e.message);
    }
}

/**
* 演示错误处理
*/
function demonstrateErrorHandling() {
    printl('\n3. 错误处理演示:');
   
    try {
      // 尝试写入不存在的路径(可能会失败)
      printl('   错误处理示例:');
      
      // 尝试写入到一个可能没有权限的路径
      try {
            config.setConfig('/system/protected/config.ini', 'test_key', 'test_value');
            printl('   - 写入受保护路径成功(可能有权限问题)');
      } catch (e) {
            printl('   - 写入受保护路径失败(预期行为): ' + e.message);
      }
      
      // 优雅地处理错误
      printl('\n   优雅的错误处理示例:');
      
      function safeSetConfig(key, value) {
            try {
                config.setConfig(CONFIG_FILE_PATH, key, value);
                return true;
            } catch (e) {
                printl('   - 安全写入失败: ' + key + ', 错误: ' + e.message);
                return false;
            }
      }
      
      // 使用安全写入函数
      safeSetConfig('safe_key', 'safe_value');
      safeSetConfig('another_key', 'another_value');
      
      printl('   - 安全写入完成');
      
    } catch (e) {
      printl('   错误处理演示出错: ' + e.message);
    }
}

/**
* 配置管理器类(ES5兼容版)
*/
function ConfigManager(filePath) {
    this.filePath = filePath;
}

// 配置管理器原型方法
ConfigManager.prototype = {
    constructor: ConfigManager,
   
    /**
   * 设置配置项
   * @param {string} key - 配置项名称
   * @param {*} value - 配置项值
   * @returns {boolean} - 是否成功
   */
    set: function(key, value) {
      try {
            var result = config.setConfig(this.filePath, key, String(value));
            printl('    → ConfigManager.set(' + key + ', ' + value + ') = ' + (result ? '成功' : '失败'));
            return true;
      } catch (e) {
            printl('    → ConfigManager.set(' + key + ', ' + value + ') 失败: ' + e.message);
            console.error('设置配置失败: ' + e.message);
            return false;
      }
    },
   
    /**
   * 获取配置项
   * @param {string} key - 配置项名称
   * @param {*} defaultValue - 默认值
   * @returns {string} - 配置项值
   */
    get: function(key, defaultValue) {
      try {
            var defaultVal = defaultValue !== undefined ? String(defaultValue) : '';
            var result = config.getConfig(this.filePath, key, defaultVal);
            printl('    → ConfigManager.get(' + key + ', ' + defaultVal + ') = ' + result);
            return result;
      } catch (e) {
            printl('    → ConfigManager.get(' + key + ', ' + defaultVal + ') 失败: ' + e.message);
            console.error('获取配置失败: ' + e.message);
            return defaultValue !== undefined ? defaultValue : '';
      }
    },
   
    /**
   * 获取布尔类型配置项
   * @param {string} key - 配置项名称
   * @param {boolean} defaultValue - 默认值
   * @returns {boolean} - 布尔值
   */
    getBoolean: function(key, defaultValue) {
      var value = this.get(key, defaultValue ? 'true' : 'false');
      return value.toLowerCase() === 'true' || value === '1';
    },
   
    /**
   * 获取数字类型配置项
   * @param {string} key - 配置项名称
   * @param {number} defaultValue - 默认值
   * @returns {number} - 数字值
   */
    getNumber: function(key, defaultValue) {
      var value = this.get(key, defaultValue !== undefined ? String(defaultValue) : '0');
      return parseFloat(value) || 0;
    },
   
    /**
   * 批量设置配置
   * @param {Object} configObj - 配置对象
   * @returns {boolean} - 是否全部成功
   */
    setBatch: function(configObj) {
      var allSuccess = true;
      
      for (var key in configObj) {
            if (configObj.hasOwnProperty(key)) {
                if (!this.set(key, configObj)) {
                  allSuccess = false;
                }
            }
      }
      
      return allSuccess;
    },
   
    /**
   * 批量获取配置
   * @param {Array} keys - 配置项名称数组
   * @param {Object} defaultValues - 默认值对象
   * @returns {Object} - 配置对象
   */
    getBatch: function(keys, defaultValues) {
      var result = {};
      defaultValues = defaultValues || {};
      
      for (var i = 0; i < keys.length; i++) {
            var key = keys;
            var defaultValue = defaultValues !== undefined ? defaultValues : '';
            result = this.get(key, defaultValue);
      }
      
      return result;
    }
};

/**
* 获取当前日期时间字符串
*/
function getCurrentDate() {
    var now = new Date();
    var year = now.getFullYear();
    var month = now.getMonth() + 1;
    var day = now.getDate();
    var hours = now.getHours();
    var minutes = now.getMinutes();
    var seconds = now.getSeconds();
   
    // 格式化日期时间
    return year + '-' + padZero(month) + '-' + padZero(day) + ' ' +
         padZero(hours) + ':' + padZero(minutes) + ':' + padZero(seconds);
}

/**
* 数字补零
*/
function padZero(num) {
    return num < 10 ? '0' + num : num;
}

/**
* 与H5页面集成的辅助函数
*/
function h5IntegrationHelpers() {
    printl('\n4. H5页面集成辅助函数:');
    printl('   以下是与config_h5_demo.html配合使用的辅助函数');
   
    // 注意:这些函数在H5页面中已通过JavaScript实现,这里仅作为示例展示
    printl('   - saveConfig(): 保存页面上的所有配置到文件');
    printl('   - loadConfig(): 从文件加载配置到页面');
    printl('   - clearConfig(): 清除页面上的所有配置');
    printl('   - ConfigManager: 配置管理辅助类,简化配置读写');
}

/**
* H5页面中使用的配置同步函数
* 注意:此函数在H5页面中已实现,这里仅作为示例
*/
function syncConfigFromH5ToNative(configData) {
    /**
   * 从H5页面同步配置到本地文件
   * @param {Object} configData - H5页面的配置数据
   */
    printl('\n5. H5与Native配置同步示例:');
    printl('   从H5页面同步配置到本地文件的示例函数');
   
    if (typeof configData === 'object' && configData !== null) {
      printl('   - 同步配置数据:');
      
      for (var key in configData) {
            if (configData.hasOwnProperty(key)) {
                printl('       ' + key + ': ' + configData);
                // 实际保存配置到本地文件
                try {
                  config.setConfig(CONFIG_FILE_PATH, key, String(configData));
                  printl('         ✓ 已保存到配置文件');
                } catch (e) {
                  printl('         ✗ 保存失败: ' + e.message);
                }
            }
      }
      
      // 验证配置是否正确保存
      printl('\n   - 验证保存的配置:');
      for (var key in configData) {
            if (configData.hasOwnProperty(key)) {
                var savedValue = config.getConfig(CONFIG_FILE_PATH, key, '未找到');
                printl('       ' + key + ': ' + savedValue + (savedValue === String(configData) ? ' (匹配)' : ' (不匹配)'));
            }
      }
    } else {
      printl('   - 无效的配置数据');
    }
}

/**
* 验证配置文件内容的函数
*/
function verifyConfigFileContent() {
    printl('\n6. 配置文件内容验证:');
    printl('   验证配置文件中实际存储的内容');
   
    try {
      // 列出所有演示中使用的配置项
      var testKeys = [
            'demo_name', 'demo_version', 'demo_enabled',
            'user_name', 'user_age', 'user_active',
            'app_name', 'app_author', 'app_date'
      ];
      
      printl('   - 配置文件路径: ' + CONFIG_FILE_PATH);
      printl('   - 配置项验证结果:');
      
      var allCorrect = true;
      
      for (var i = 0; i < testKeys.length; i++) {
            var key = testKeys;
            var value = config.getConfig(CONFIG_FILE_PATH, key, '**未找到**');
            printl('   ' + key + ': ' + value);
            
            if (value === '**未找到**') {
                allCorrect = false;
            }
      }
      
      printl('\n   - 验证结果: ' + (allCorrect ? '✅ 所有配置项都已正确保存' : '⚠️ 部分配置项未找到'));
      
    } catch (e) {
      printl('   配置文件验证出错: ' + e.message);
      console.error('配置文件验证出错: ', e);
    }
}

/**
* 执行演示
*/
try {
    runConfigDemo();
   
    // 验证配置文件内容
    verifyConfigFileContent();
   
    /**
   * 导出配置管理器供其他脚本使用
   */
    if (typeof module !== 'undefined' && module.exports) {
      module.exports = ConfigManager;
    }
   
    printl('\n&#128221; 最终提示:');
    printl('   - 配置文件已保存到: ' + CONFIG_FILE_PATH);
    printl('   - 您可以在AIWROK环境中查看或编辑该文件');
    printl('   - 如果配置文件未正确读写,请检查文件系统访问权限');
} catch (e) {
    // 捕获任何可能的异常,避免传播到AIWROK环境
    console.error('演示执行异常: ' + e.message);
    printl('\n❌ 演示执行失败: ' + e.message);
}


页: [1]
查看完整版本: AIWORK软件配置读写H5演示配套脚本