注册 登录
发贴工具
查看: 11|回复: 0
打印 上一主题 下一主题

[24小时收录超级好的网站] AIWROK软件漂亮对接H5简单示例

[复制链接]

2388

主题

2436

帖子

1万

积分

积分
14538
跳转到指定楼层
楼主
AIWROK软件漂亮对接H5简单示例








这个保存为:start.js


  1. Import("主脚本.js");
  2. //初始化一个activity页面
  3. //🍎交流QQ群711841924群一,苹果内测群,528816639
  4. var ac = new activity();
  5. ac.loadXML(`
  6. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  7.     android:layout_width="match_parent"
  8.     android:layout_height="match_parent"
  9.     android:orientation="vertical"
  10. >

  11.    

  12.     <WebView
  13.         android:id="@+id/web"
  14.         android:layout_width="match_parent"
  15.         android:layout_height="0dp"
  16.         android:layout_weight="1" />

  17. </LinearLayout>
  18. `);

  19. sleep.millisecond(400);

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

  22. // 加载本地HTML文件(使用绝对路径)
  23. web1.url('/代码/h5.html');
复制代码
这个保存为 h5.html

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>复杂H5与安卓原生交互演示</title>
  7.     <style>
  8.         * {
  9.             margin: 0;
  10.             padding: 0;
  11.             box-sizing: border-box;
  12.         }

  13.         body {
  14.             font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  15.             background: linear-gradient(135deg, #1a2a6c, #b21f1f, #1a2a6c);
  16.             color: #fff;
  17.             line-height: 1.6;
  18.             padding: 20px;
  19.             min-height: 100vh;
  20.         }

  21.         .container {
  22.             max-width: 800px;
  23.             margin: 0 auto;
  24.             background: rgba(0, 0, 0, 0.7);
  25.             border-radius: 15px;
  26.             padding: 25px;
  27.             box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
  28.         }

  29.         header {
  30.             text-align: center;
  31.             margin-bottom: 30px;
  32.             padding-bottom: 20px;
  33.             border-bottom: 2px solid #4CAF50;
  34.         }

  35.         h1 {
  36.             font-size: 2.5em;
  37.             margin-bottom: 10px;
  38.             color: #4CAF50;
  39.             text-shadow: 0 0 10px rgba(76, 175, 80, 0.5);
  40.         }

  41.         .subtitle {
  42.             font-size: 1.2em;
  43.             opacity: 0.8;
  44.         }

  45.         .section {
  46.             background: rgba(50, 50, 50, 0.6);
  47.             border-radius: 10px;
  48.             padding: 20px;
  49.             margin-bottom: 25px;
  50.             border: 1px solid #444;
  51.         }

  52.         .section-title {
  53.             font-size: 1.5em;
  54.             margin-bottom: 15px;
  55.             color: #2196F3;
  56.             display: flex;
  57.             align-items: center;
  58.         }

  59.         .section-title::before {
  60.             content: "▶";
  61.             margin-right: 10px;
  62.             color: #4CAF50;
  63.         }

  64.         .form-group {
  65.             margin-bottom: 20px;
  66.         }

  67.         label {
  68.             display: block;
  69.             margin-bottom: 8px;
  70.             font-weight: bold;
  71.             color: #FF9800;
  72.         }

  73.         input, select, textarea {
  74.             width: 100%;
  75.             padding: 12px;
  76.             border: none;
  77.             border-radius: 8px;
  78.             background: rgba(30, 30, 30, 0.8);
  79.             color: #fff;
  80.             font-size: 16px;
  81.             border: 1px solid #444;
  82.         }

  83.         input:focus, select:focus, textarea:focus {
  84.             outline: none;
  85.             border-color: #2196F3;
  86.             box-shadow: 0 0 10px rgba(33, 150, 243, 0.5);
  87.         }

  88.         .radio-group, .checkbox-group {
  89.             display: flex;
  90.             flex-wrap: wrap;
  91.             gap: 15px;
  92.         }

  93.         .radio-item, .checkbox-item {
  94.             display: flex;
  95.             align-items: center;
  96.             background: rgba(40, 40, 40, 0.7);
  97.             padding: 10px 15px;
  98.             border-radius: 8px;
  99.         }

  100.         .radio-item input, .checkbox-item input {
  101.             width: auto;
  102.             margin-right: 8px;
  103.         }

  104.         .button-group {
  105.             display: grid;
  106.             grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  107.             gap: 15px;
  108.             margin-top: 20px;
  109.         }

  110.         button {
  111.             padding: 14px 20px;
  112.             border: none;
  113.             border-radius: 8px;
  114.             background: linear-gradient(to right, #4CAF50, #2E7D32);
  115.             color: white;
  116.             font-size: 16px;
  117.             font-weight: bold;
  118.             cursor: pointer;
  119.             transition: all 0.3s ease;
  120.             box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
  121.         }

  122.         button:hover {
  123.             transform: translateY(-3px);
  124.             box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4);
  125.             background: linear-gradient(to right, #45a049, #1B5E20);
  126.         }

  127.         button:active {
  128.             transform: translateY(1px);
  129.         }

  130.         .secondary {
  131.             background: linear-gradient(to right, #2196F3, #0D47A1);
  132.         }

  133.         .secondary:hover {
  134.             background: linear-gradient(to right, #1e88e5, #0b3d91);
  135.         }

  136.         .warning {
  137.             background: linear-gradient(to right, #FF9800, #E65100);
  138.         }

  139.         .warning:hover {
  140.             background: linear-gradient(to right, #F57C00, #BF360C);
  141.         }

  142.         .danger {
  143.             background: linear-gradient(to right, #F44336, #B71C1C);
  144.         }

  145.         .danger:hover {
  146.             background: linear-gradient(to right, #E53935, #B71C1C);
  147.         }

  148.         .result-container {
  149.             background: rgba(30, 30, 30, 0.8);
  150.             border-radius: 8px;
  151.             padding: 20px;
  152.             margin-top: 20px;
  153.             border: 1px solid #444;
  154.             max-height: 300px;
  155.             overflow-y: auto;
  156.         }

  157.         .result-title {
  158.             font-size: 1.2em;
  159.             margin-bottom: 10px;
  160.             color: #FF9800;
  161.         }

  162.         #result {
  163.             font-family: 'Courier New', monospace;
  164.             white-space: pre-wrap;
  165.             word-break: break-word;
  166.             color: #ddd;
  167.         }

  168.         .status-indicator {
  169.             display: inline-block;
  170.             width: 12px;
  171.             height: 12px;
  172.             border-radius: 50%;
  173.             background: #F44336;
  174.             margin-right: 10px;
  175.         }

  176.         .status-indicator.connected {
  177.             background: #4CAF50;
  178.         }

  179.         .tabs {
  180.             display: flex;
  181.             margin-bottom: 20px;
  182.             border-bottom: 2px solid #444;
  183.         }

  184.         .tab {
  185.             padding: 12px 20px;
  186.             cursor: pointer;
  187.             background: rgba(50, 50, 50, 0.6);
  188.             border: 1px solid #444;
  189.             border-bottom: none;
  190.             border-radius: 8px 8px 0 0;
  191.             margin-right: 5px;
  192.         }

  193.         .tab.active {
  194.             background: rgba(30, 30, 30, 0.8);
  195.             color: #4CAF50;
  196.             font-weight: bold;
  197.         }

  198.         .tab-content {
  199.             display: none;
  200.         }

  201.         .tab-content.active {
  202.             display: block;
  203.         }

  204.         .progress-bar {
  205.             height: 10px;
  206.             background: rgba(50, 50, 50, 0.6);
  207.             border-radius: 5px;
  208.             margin: 20px 0;
  209.             overflow: hidden;
  210.         }

  211.         .progress {
  212.             height: 100%;
  213.             background: linear-gradient(to right, #4CAF50, #2196F3);
  214.             width: 0%;
  215.             transition: width 0.5s ease;
  216.         }

  217.         footer {
  218.             text-align: center;
  219.             margin-top: 30px;
  220.             padding-top: 20px;
  221.             border-top: 1px solid #444;
  222.             color: #aaa;
  223.             font-size: 0.9em;
  224.         }

  225.         @media (max-width: 600px) {
  226.             .container {
  227.                 padding: 15px;
  228.             }
  229.             
  230.             .button-group {
  231.                 grid-template-columns: 1fr;
  232.             }
  233.             
  234.             h1 {
  235.                 font-size: 2em;
  236.             }
  237.         }
  238.     </style>
  239. </head>
  240. <body>
  241.     <div class="container">
  242.         <header>
  243.             <h1>复杂H5与安卓原生交互演示</h1>
  244.             <p class="subtitle">展示高级功能和复杂数据交互</p>
  245.             <div>
  246.                 <span class="status-indicator" id="connectionStatus"></span>
  247.                 <span id="connectionText">连接状态: 未连接</span>
  248.             </div>
  249.         </header>

  250.         <div class="tabs">
  251.             <div class="tab active" onclick="switchTab('tab1')">数据交互</div>
  252.             <div class="tab" onclick="switchTab('tab2')">系统功能</div>
  253.             <div class="tab" onclick="switchTab('tab3')">配置管理</div>
  254.             <div class="tab" onclick="switchTab('tab4')">设备信息</div>
  255.         </div>

  256.         <div id="tab1" class="tab-content active">
  257.             <div class="section">
  258.                 <h2 class="section-title">复杂表单数据</h2>
  259.                
  260.                 <div class="form-group">
  261.                     <label for="userName">用户姓名</label>
  262.                     <input type="text" id="userName" placeholder="请输入您的姓名">
  263.                 </div>
  264.                
  265.                 <div class="form-group">
  266.                     <label for="userEmail">邮箱地址</label>
  267.                     <input type="email" id="userEmail" placeholder="请输入您的邮箱">
  268.                 </div>
  269.                
  270.                 <div class="form-group">
  271.                     <label for="userAge">年龄</label>
  272.                     <input type="number" id="userAge" min="1" max="120" placeholder="请输入您的年龄">
  273.                 </div>
  274.                
  275.                 <div class="form-group">
  276.                     <label>性别</label>
  277.                     <div class="radio-group">
  278.                         <div class="radio-item">
  279.                             <input type="radio" id="male" name="gender" value="male">
  280.                             <label for="male">男</label>
  281.                         </div>
  282.                         <div class="radio-item">
  283.                             <input type="radio" id="female" name="gender" value="female">
  284.                             <label for="female">女</label>
  285.                         </div>
  286.                         <div class="radio-item">
  287.                             <input type="radio" id="other" name="gender" value="other">
  288.                             <label for="other">其他</label>
  289.                         </div>
  290.                     </div>
  291.                 </div>
  292.                
  293.                 <div class="form-group">
  294.                     <label>兴趣爱好</label>
  295.                     <div class="checkbox-group">
  296.                         <div class="checkbox-item">
  297.                             <input type="checkbox" id="reading" name="interests" value="reading">
  298.                             <label for="reading">阅读</label>
  299.                         </div>
  300.                         <div class="checkbox-item">
  301.                             <input type="checkbox" id="music" name="interests" value="music">
  302.                             <label for="music">音乐</label>
  303.                         </div>
  304.                         <div class="checkbox-item">
  305.                             <input type="checkbox" id="sports" name="interests" value="sports">
  306.                             <label for="sports">运动</label>
  307.                         </div>
  308.                         <div class="checkbox-item">
  309.                             <input type="checkbox" id="travel" name="interests" value="travel">
  310.                             <label for="travel">旅行</label>
  311.                         </div>
  312.                         <div class="checkbox-item">
  313.                             <input type="checkbox" id="technology" name="interests" value="technology">
  314.                             <label for="technology">科技</label>
  315.                         </div>
  316.                     </div>
  317.                 </div>
  318.                
  319.                 <div class="form-group">
  320.                     <label for="userBio">个人简介</label>
  321.                     <textarea id="userBio" rows="4" placeholder="请简单介绍一下自己..."></textarea>
  322.                 </div>
  323.                
  324.                 <div class="form-group">
  325.                     <label for="favColor">喜欢的颜色</label>
  326.                     <select id="favColor">
  327.                         <option value="">请选择</option>
  328.                         <option value="red">红色</option>
  329.                         <option value="blue">蓝色</option>
  330.                         <option value="green">绿色</option>
  331.                         <option value="yellow">黄色</option>
  332.                         <option value="purple">紫色</option>
  333.                         <option value="orange">橙色</option>
  334.                     </select>
  335.                 </div>
  336.             </div>
  337.             
  338.             <div class="section">
  339.                 <h2 class="section-title">数据操作</h2>
  340.                 <div class="button-group">
  341.                     <button onclick="sendComplexData()">发送复杂数据</button>
  342.                     <button class="secondary" onclick="sendBatchData()">批量数据传输</button>
  343.                     <button class="warning" onclick="clearForm()">清空表单</button>
  344.                     <button class="danger" onclick="resetDemo()">重置演示</button>
  345.                 </div>
  346.             </div>
  347.         </div>

  348.         <div id="tab2" class="tab-content">
  349.             <div class="section">
  350.                 <h2 class="section-title">系统功能调用</h2>
  351.                 <div class="button-group">
  352.                     <button onclick="goHome()">返回桌面</button>
  353.                     <button onclick="showRecents()">显示最近任务</button>
  354.                     <button onclick="takeScreenshot()">截屏</button>
  355.                     <button onclick="toggleFlashlight()">开关手电筒</button>
  356.                     <button onclick="vibrate()">震动</button>
  357.                     <button onclick="playNotificationSound()">播放提示音</button>
  358.                 </div>
  359.             </div>
  360.             
  361.             <div class="section">
  362.                 <h2 class="section-title">应用管理</h2>
  363.                 <div class="button-group">
  364.                     <button onclick="openApp('com.android.settings')">打开设置</button>
  365.                     <button onclick="openApp('com.android.chrome')">打开Chrome</button>
  366.                     <button onclick="openApp('com.android.camera2')">打开相机</button>
  367.                     <button onclick="listInstalledApps()">列出已安装应用</button>
  368.                 </div>
  369.             </div>
  370.         </div>

  371.         <div id="tab3" class="tab-content">
  372.             <div class="section">
  373.                 <h2 class="section-title">配置管理</h2>
  374.                
  375.                 <div class="form-group">
  376.                     <label for="configKey">配置键名</label>
  377.                     <input type="text" id="configKey" placeholder="例如: user_preference">
  378.                 </div>
  379.                
  380.                 <div class="form-group">
  381.                     <label for="configValue">配置值</label>
  382.                     <input type="text" id="configValue" placeholder="配置值">
  383.                 </div>
  384.                
  385.                 <div class="form-group">
  386.                     <label for="configPath">配置文件路径</label>
  387.                     <input type="text" id="configPath" value="/sdcard/aiwork/config.txt">
  388.                 </div>
  389.                
  390.                 <div class="button-group">
  391.                     <button onclick="saveConfig()">保存配置</button>
  392.                     <button class="secondary" onclick="loadConfig()">读取配置</button>
  393.                     <button class="warning" onclick="deleteConfig()">删除配置</button>
  394.                 </div>
  395.             </div>
  396.             
  397.             <div class="section">
  398.                 <h2 class="section-title">公共变量</h2>
  399.                
  400.                 <div class="form-group">
  401.                     <label for="publicVarKey">变量名</label>
  402.                     <input type="text" id="publicVarKey" placeholder="例如: shared_data">
  403.                 </div>
  404.                
  405.                 <div class="form-group">
  406.                     <label for="publicVarValue">变量值</label>
  407.                     <input type="text" id="publicVarValue" placeholder="变量值">
  408.                 </div>
  409.                
  410.                 <div class="button-group">
  411.                     <button onclick="setPublicVar()">设置变量</button>
  412.                     <button class="secondary" onclick="getPublicVar()">获取变量</button>
  413.                 </div>
  414.             </div>
  415.         </div>

  416.         <div id="tab4" class="tab-content">
  417.             <div class="section">
  418.                 <h2 class="section-title">设备信息</h2>
  419.                 <div class="button-group">
  420.                     <button onclick="getDeviceInfo()">获取设备信息</button>
  421.                     <button onclick="getStorageInfo()">获取存储信息</button>
  422.                     <button onclick="getNetworkInfo()">获取网络信息</button>
  423.                     <button onclick="getBatteryInfo()">获取电池信息</button>
  424.                 </div>
  425.             </div>
  426.             
  427.             <div class="section">
  428.                 <h2 class="section-title">系统操作</h2>
  429.                 <div class="button-group">
  430.                     <button onclick="showToast('这是一条Toast消息')">显示Toast</button>
  431.                     <button onclick="showNotification()">显示通知</button>
  432.                     <button onclick="setClipboardText()">设置剪贴板</button>
  433.                     <button onclick="getClipboardText()">获取剪贴板</button>
  434.                 </div>
  435.             </div>
  436.         </div>

  437.         <div class="progress-bar">
  438.             <div class="progress" id="progressBar"></div>
  439.         </div>

  440.         <div class="section">
  441.             <h2 class="section-title">交互结果</h2>
  442.             <div class="result-container">
  443.                 <div class="result-title">操作日志:</div>
  444.                 <div id="result">等待操作...</div>
  445.             </div>
  446.         </div>

  447.         <footer>
  448.             <p>复杂H5与安卓原生交互演示 v2.0</p>
  449.             <p>适用于AIWROK自动化平台 | Rhino JavaScript引擎</p>
  450.         </footer>
  451.     </div>

  452.     <script>
  453.         // 显示结果
  454.         function showResult(message) {
  455.             var resultElement = document.getElementById('result');
  456.             var timestamp = new Date().toLocaleString();
  457.             resultElement.innerHTML += '[' + timestamp + '] ' + message + '\n';
  458.             resultElement.scrollTop = resultElement.scrollHeight;
  459.         }

  460.         // 显示进度
  461.         function showProgress(percent) {
  462.             document.getElementById('progressBar').style.width = percent + '%';
  463.         }

  464.         // 切换标签页
  465.         function switchTab(tabId) {
  466.             // 隐藏所有标签内容
  467.             var tabContents = document.getElementsByClassName('tab-content');
  468.             for (var i = 0; i < tabContents.length; i++) {
  469.                 tabContents[i].classList.remove('active');
  470.             }
  471.             
  472.             // 移除所有标签的活动状态
  473.             var tabs = document.getElementsByClassName('tab');
  474.             for (var i = 0; i < tabs.length; i++) {
  475.                 tabs[i].classList.remove('active');
  476.             }
  477.             
  478.             // 显示选中的标签内容
  479.             document.getElementById(tabId).classList.add('active');
  480.             
  481.             // 设置选中标签为活动状态
  482.             event.target.classList.add('active');
  483.         }

  484.         // 连接状态更新
  485.         function updateConnectionStatus(connected) {
  486.             var indicator = document.getElementById('connectionStatus');
  487.             var text = document.getElementById('connectionText');
  488.             
  489.             if (connected) {
  490.                 indicator.classList.add('connected');
  491.                 text.textContent = '连接状态: 已连接';
  492.             } else {
  493.                 indicator.classList.remove('connected');
  494.                 text.textContent = '连接状态: 未连接';
  495.             }
  496.         }

  497.         // 发送复杂数据
  498.         function sendComplexData() {
  499.             try {
  500.                 showResult('正在收集表单数据...');
  501.                 showProgress(30);
  502.                
  503.                 // 收集表单数据
  504.                 var formData = {
  505.                     userName: document.getElementById('userName').value,
  506.                     userEmail: document.getElementById('userEmail').value,
  507.                     userAge: document.getElementById('userAge').value,
  508.                     gender: document.querySelector('input[name="gender"]:checked')?.value || '',
  509.                     interests: [],
  510.                     userBio: document.getElementById('userBio').value,
  511.                     favColor: document.getElementById('favColor').value,
  512.                     timestamp: new Date().toISOString()
  513.                 };
  514.                
  515.                 // 收集复选框数据
  516.                 var interestCheckboxes = document.querySelectorAll('input[name="interests"]:checked');
  517.                 for (var i = 0; i < interestCheckboxes.length; i++) {
  518.                     formData.interests.push(interestCheckboxes[i].value);
  519.                 }
  520.                
  521.                 showResult('数据收集完成,正在发送到APP...');
  522.                 showProgress(60);
  523.                
  524.                 // 发送到APP
  525.                 window.at.callFunction('processUserData', JSON.stringify(formData));
  526.                
  527.                 showResult('复杂数据已发送到APP: ' + JSON.stringify(formData, null, 2));
  528.                 showProgress(100);
  529.                
  530.                 // 2秒后重置进度条
  531.                 setTimeout(function() {
  532.                     showProgress(0);
  533.                 }, 2000);
  534.                
  535.             } catch (e) {
  536.                 showResult('发送数据出错: ' + e);
  537.                 showProgress(0);
  538.             }
  539.         }

  540.         // 批量数据传输
  541.         function sendBatchData() {
  542.             try {
  543.                 showResult('开始批量数据传输...');
  544.                 showProgress(10);
  545.                
  546.                 // 生成批量数据
  547.                 var batchData = [];
  548.                 for (var i = 0; i < 10; i++) {
  549.                     batchData.push({
  550.                         id: i + 1,
  551.                         name: '项目 ' + (i + 1),
  552.                         value: Math.random() * 100,
  553.                         timestamp: new Date(Date.now() - Math.random() * 10000000).toISOString()
  554.                     });
  555.                     
  556.                     // 更新进度
  557.                     showProgress(10 + i * 9);
  558.                 }
  559.                
  560.                 showResult('批量数据生成完成,正在发送...');
  561.                 showProgress(90);
  562.                
  563.                 // 发送到APP
  564.                 window.at.callFunction('processBatchData', JSON.stringify(batchData));
  565.                
  566.                 showResult('批量数据传输完成,共发送 ' + batchData.length + ' 条记录');
  567.                 showProgress(100);
  568.                
  569.                 // 2秒后重置进度条
  570.                 setTimeout(function() {
  571.                     showProgress(0);
  572.                 }, 2000);
  573.                
  574.             } catch (e) {
  575.                 showResult('批量数据传输出错: ' + e);
  576.                 showProgress(0);
  577.             }
  578.         }

  579.         // 清空表单
  580.         function clearForm() {
  581.             document.getElementById('userName').value = '';
  582.             document.getElementById('userEmail').value = '';
  583.             document.getElementById('userAge').value = '';
  584.             document.getElementById('userBio').value = '';
  585.             document.getElementById('favColor').selectedIndex = 0;
  586.             
  587.             // 清空单选按钮
  588.             var radios = document.querySelectorAll('input[name="gender"]');
  589.             for (var i = 0; i < radios.length; i++) {
  590.                 radios[i].checked = false;
  591.             }
  592.             
  593.             // 清空复选框
  594.             var checkboxes = document.querySelectorAll('input[name="interests"]');
  595.             for (var i = 0; i < checkboxes.length; i++) {
  596.                 checkboxes[i].checked = false;
  597.             }
  598.             
  599.             showResult('表单已清空');
  600.         }

  601.         // 重置演示
  602.         function resetDemo() {
  603.             clearForm();
  604.             document.getElementById('result').innerHTML = '演示已重置\n';
  605.             showResult('演示已重置');
  606.         }

  607.         // 系统功能调用
  608.         function goHome() {
  609.             try {
  610.                 window.at.runJs(function() {
  611.                     printl('H5请求返回桌面');
  612.                     auto.home();
  613.                 }.toString());
  614.                 showResult('已请求返回桌面');
  615.             } catch (e) {
  616.                 showResult('返回桌面失败: ' + e);
  617.             }
  618.         }

  619.         function showRecents() {
  620.             try {
  621.                 window.at.runJs(function() {
  622.                     printl('H5请求显示最近任务');
  623.                     auto.recents();
  624.                 }.toString());
  625.                 showResult('已请求显示最近任务');
  626.             } catch (e) {
  627.                 showResult('显示最近任务失败: ' + e);
  628.             }
  629.         }

  630.         function takeScreenshot() {
  631.             try {
  632.                 window.at.runJs(function() {
  633.                     printl('H5请求截屏');
  634.                     // 这里可以调用具体的截屏方法
  635.                 }.toString());
  636.                 showResult('截屏请求已发送');
  637.             } catch (e) {
  638.                 showResult('截屏请求失败: ' + e);
  639.             }
  640.         }

  641.         function toggleFlashlight() {
  642.             try {
  643.                 window.at.runJs(function() {
  644.                     printl('H5请求开关手电筒');
  645.                     // 这里可以调用具体的手电筒控制方法
  646.                 }.toString());
  647.                 showResult('手电筒控制请求已发送');
  648.             } catch (e) {
  649.                 showResult('手电筒控制失败: ' + e);
  650.             }
  651.         }

  652.         function vibrate() {
  653.             try {
  654.                 window.at.runJs(function() {
  655.                     printl('H5请求震动');
  656.                     // 这里可以调用具体的震动方法
  657.                 }.toString());
  658.                 showResult('震动请求已发送');
  659.             } catch (e) {
  660.                 showResult('震动请求失败: ' + e);
  661.             }
  662.         }

  663.         function playNotificationSound() {
  664.             try {
  665.                 window.at.runJs(function() {
  666.                     printl('H5请求播放提示音');
  667.                     // 这里可以调用具体的播放声音方法
  668.                 }.toString());
  669.                 showResult('播放提示音请求已发送');
  670.             } catch (e) {
  671.                 showResult('播放提示音失败: ' + e);
  672.             }
  673.         }

  674.         // 应用管理
  675.         function openApp(packageName) {
  676.             try {
  677.                 window.at.runJs(function(pkg) {
  678.                     printl('H5请求打开应用: ' + pkg);
  679.                     // 这里可以调用具体的应用启动方法
  680.                 }.toString(), packageName);
  681.                 showResult('打开应用请求已发送: ' + packageName);
  682.             } catch (e) {
  683.                 showResult('打开应用失败: ' + e);
  684.             }
  685.         }

  686.         function listInstalledApps() {
  687.             try {
  688.                 window.at.runJs(function() {
  689.                     printl('H5请求列出已安装应用');
  690.                     // 这里可以调用具体的获取应用列表方法
  691.                 }.toString());
  692.                 showResult('列出应用请求已发送');
  693.             } catch (e) {
  694.                 showResult('列出应用失败: ' + e);
  695.             }
  696.         }

  697.         // 配置管理
  698.         function saveConfig() {
  699.             try {
  700.                 var key = document.getElementById('configKey').value;
  701.                 var value = document.getElementById('configValue').value;
  702.                 var path = document.getElementById('configPath').value;
  703.                
  704.                 if (!key || !value || !path) {
  705.                     showResult('请填写完整的配置信息');
  706.                     return;
  707.                 }
  708.                
  709.                 window.at.setConfig(path, key, value);
  710.                 showResult('配置已保存: ' + key + ' = ' + value);
  711.             } catch (e) {
  712.                 showResult('保存配置失败: ' + e);
  713.             }
  714.         }

  715.         function loadConfig() {
  716.             try {
  717.                 var key = document.getElementById('configKey').value;
  718.                 var path = document.getElementById('configPath').value;
  719.                 var defaultValue = '[无默认值]';
  720.                
  721.                 if (!key || !path) {
  722.                     showResult('请填写配置键名和路径');
  723.                     return;
  724.                 }
  725.                
  726.                 var value = window.at.getConfig(path, key, defaultValue);
  727.                 document.getElementById('configValue').value = value;
  728.                 showResult('读取配置: ' + key + ' = ' + value);
  729.             } catch (e) {
  730.                 showResult('读取配置失败: ' + e);
  731.             }
  732.         }

  733.         function deleteConfig() {
  734.             try {
  735.                 var key = document.getElementById('configKey').value;
  736.                 var path = document.getElementById('configPath').value;
  737.                
  738.                 if (!key || !path) {
  739.                     showResult('请填写配置键名和路径');
  740.                     return;
  741.                 }
  742.                
  743.                 window.at.setConfig(path, key, ''); // 空值表示删除
  744.                 document.getElementById('configValue').value = '';
  745.                 showResult('配置已删除: ' + key);
  746.             } catch (e) {
  747.                 showResult('删除配置失败: ' + e);
  748.             }
  749.         }

  750.         // 公共变量
  751.         function setPublicVar() {
  752.             try {
  753.                 var key = document.getElementById('publicVarKey').value;
  754.                 var value = document.getElementById('publicVarValue').value;
  755.                
  756.                 if (!key || !value) {
  757.                     showResult('请填写完整的变量信息');
  758.                     return;
  759.                 }
  760.                
  761.                 window.at.publicSet(key, value);
  762.                 showResult('公共变量已设置: ' + key + ' = ' + value);
  763.             } catch (e) {
  764.                 showResult('设置公共变量失败: ' + e);
  765.             }
  766.         }

  767.         function getPublicVar() {
  768.             try {
  769.                 var key = document.getElementById('publicVarKey').value;
  770.                
  771.                 if (!key) {
  772.                     showResult('请填写变量名');
  773.                     return;
  774.                 }
  775.                
  776.                 var value = window.at.publicGet(key);
  777.                 document.getElementById('publicVarValue').value = value;
  778.                 showResult('获取公共变量: ' + key + ' = ' + value);
  779.             } catch (e) {
  780.                 showResult('获取公共变量失败: ' + e);
  781.             }
  782.         }

  783.         // 设备信息
  784.         function getDeviceInfo() {
  785.             try {
  786.                 showResult('正在获取设备信息...');
  787.                
  788.                 window.at.runJs(function() {
  789.                     printl('H5请求获取设备信息');
  790.                     // 这里可以调用具体的设备信息获取方法
  791.                 }.toString());
  792.                
  793.                 // 获取基本信息
  794.                 var rootPath = window.at.getRootPath();
  795.                 var resPath = window.at.getResourcesPath();
  796.                
  797.                 showResult('设备基本信息:\n' +
  798.                           '项目根目录: ' + rootPath + '\n' +
  799.                           '资源目录: ' + resPath);
  800.             } catch (e) {
  801.                 showResult('获取设备信息失败: ' + e);
  802.             }
  803.         }

  804.         function getStorageInfo() {
  805.             try {
  806.                 showResult('正在获取存储信息...');
  807.                
  808.                 window.at.runJs(function() {
  809.                     printl('H5请求获取存储信息');
  810.                     // 这里可以调用具体的存储信息获取方法
  811.                 }.toString());
  812.                
  813.                 showResult('存储信息请求已发送');
  814.             } catch (e) {
  815.                 showResult('获取存储信息失败: ' + e);
  816.             }
  817.         }

  818.         function getNetworkInfo() {
  819.             try {
  820.                 showResult('正在获取网络信息...');
  821.                
  822.                 window.at.runJs(function() {
  823.                     printl('H5请求获取网络信息');
  824.                     // 这里可以调用具体的网络信息获取方法
  825.                 }.toString());
  826.                
  827.                 showResult('网络信息请求已发送');
  828.             } catch (e) {
  829.                 showResult('获取网络信息失败: ' + e);
  830.             }
  831.         }

  832.         function getBatteryInfo() {
  833.             try {
  834.                 showResult('正在获取电池信息...');
  835.                
  836.                 window.at.runJs(function() {
  837.                     printl('H5请求获取电池信息');
  838.                     // 这里可以调用具体的电池信息获取方法
  839.                 }.toString());
  840.                
  841.                 showResult('电池信息请求已发送');
  842.             } catch (e) {
  843.                 showResult('获取电池信息失败: ' + e);
  844.             }
  845.         }

  846.         // 系统操作
  847.         function showToast(message) {
  848.             try {
  849.                 window.at.runJs(function(msg) {
  850.                     printl('H5请求显示Toast: ' + msg);
  851.                     // 这里可以调用具体的Toast显示方法
  852.                 }.toString(), message);
  853.                
  854.                 showResult('Toast请求已发送: ' + message);
  855.             } catch (e) {
  856.                 showResult('显示Toast失败: ' + e);
  857.             }
  858.         }

  859.         function showNotification() {
  860.             try {
  861.                 window.at.runJs(function() {
  862.                     printl('H5请求显示通知');
  863.                     // 这里可以调用具体的通知显示方法
  864.                 }.toString());
  865.                
  866.                 showResult('显示通知请求已发送');
  867.             } catch (e) {
  868.                 showResult('显示通知失败: ' + e);
  869.             }
  870.         }

  871.         function setClipboardText() {
  872.             try {
  873.                 var text = prompt('请输入要复制到剪贴板的文本:');
  874.                 if (text !== null) {
  875.                     window.at.runJs(function(txt) {
  876.                         printl('H5请求设置剪贴板: ' + txt);
  877.                         // 这里可以调用具体的剪贴板设置方法
  878.                     }.toString(), text);
  879.                     
  880.                     showResult('设置剪贴板请求已发送');
  881.                 }
  882.             } catch (e) {
  883.                 showResult('设置剪贴板失败: ' + e);
  884.             }
  885.         }

  886.         function getClipboardText() {
  887.             try {
  888.                 window.at.runJs(function() {
  889.                     printl('H5请求获取剪贴板内容');
  890.                     // 这里可以调用具体的剪贴板获取方法
  891.                 }.toString());
  892.                
  893.                 showResult('获取剪贴板内容请求已发送');
  894.             } catch (e) {
  895.                 showResult('获取剪贴板内容失败: ' + e);
  896.             }
  897.         }

  898.         // 页面加载完成
  899.         window.onload = function() {
  900.             showResult('复杂H5页面加载完成');
  901.             updateConnectionStatus(true);
  902.             
  903.             // 设置一些默认值用于演示
  904.             document.getElementById('userName').value = '张三';
  905.             document.getElementById('userEmail').value = 'zhangsan@example.com';
  906.             document.getElementById('userAge').value = '25';
  907.             document.getElementById('male').checked = true;
  908.             document.getElementById('reading').checked = true;
  909.             document.getElementById('music').checked = true;
  910.             document.getElementById('userBio').value = '我是一个热爱技术的开发者,喜欢探索新的技术领域。';
  911.         };
  912.     </script>
  913. </body>
  914. </html>

复制代码




untoAIWROK软件漂亮对接H5简单示例nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读了
    采集亚马逊正版群发工具有没有?
    Apr.20旅行X心语今天来说说YYPOST新功能的一个灵活用法,采集亚马逊商品信息,并且获得排名的软件,亚马逊现在越来越多客户做,淘宝的水是越来越清了,以前做电商的客户,现在都转战到外国,最赚钱的要数一些客户往亚马逊里堆了吧,拿我这个YYPOST的客户,最多的是采集,分析排名,刷价格,刷数量,改价,刷访问量等等技术

    企业发展B2B网站有什么东东软件可以发呢
    标题企业发展网B2B软件,现在虽然B2B网站收录不错,可愁的是心急的人们,他们太想一口吃撑胖子了,发帖宣传虽然不能像佛系那样淡定,但也不能像跑火车那般急躁对待,自己内容不收录,完全是自己操作内容问题,可以参考一下别人的内容是怎么弄的,然后自己要试着转变,而且收录这个内容,常常会变化的,不是一种规则就吃到老

    搜房天下房聊软件哪一个好呢
    本帖最后由 发帖软件 于 2019-5-22 16:15 编辑 2搜房天下群发房聊信息软件,开始本来打算做58同城的,但发一个就要一次点触验证码,这就让人没有感觉到存在的价值了吧,都是卖二手房和新房的搜房天下倒是可以发即时聊天信息,也没有发现他这个网站有啥子限制,登陆一个搜房天下账号,然后采集回来分类列表的网址,然后就一

    大家坛有没有好用的群发工具下载呢
    当你的笑容给我礼貌的招呼,大家坛全自动发帖软件,宣传推广是一场持久战,总是有一些人把软件用了一天,或是几个小时,就觉得自己付出太多了,那加进来的粉丝,或是流量,应该是和宣传多少成正比的,其实没有这么便宜的事,就像很多阅读量超过一百万的视频,或是电影,真正会在屏幕打赏的人不会超过三千,真正大额打赏给主

    群发正版软件中国塑料网
    中国塑料网群发软件YYPOST脚本下载地址,这个网站会有一个很奇怪的问题就是你在首页登陆无半个验证码,但在登陆网址登陆就会有一个验证码,所以我们灵活一些,在首页登陆就不用输入验证码了哈。网站秒收录比较高,但发的都是五金和建筑行业,先前有很多人都是发土建工程的大公司操作的,现在这个网站专为那个行业诞生的吧。

    OpenStreetMap网站正版2019年发帖工具下载
    本帖最后由 发帖软件 于 2019-5-21 11:13 编辑 OpenStreetMap网站全自动群发,OpenStreetMapOpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。有的人编辑地图然后等收录,有的人发日志等收录,我们这里也是利用地图日志做为宣传的目标,简单的脚本理

    搜房天下全自动收短信全自动识别验证码注册账号软件
    房天下自动注册机,这个脚本是前几天发房聊的脚本廷伸品种,这个脚本能做到自动注册账号,自动保存账号,自动发房聊的效果,不过今天我们主要说一说怎么注册账号写脚本吧,这个搜房天天下的账号,可以发提问,可以发房聊,发论坛,发博客,还有发个人中心页都是有秒收的效果的,这样就省去了去买号,去乱花钱的效果了吧,而

    企业邮箱安卓端有什么APP软件可以发的呢
    请输入标题企业邮箱安卓发发送邮箱脚本,这个脚本是利用企业邮箱进行群发的,全程是一种模拟手工操作的过程,所以封号是很少的,而且企业邮箱群发到普通QQ邮箱不容易进垃圾箱中的,所以这个脚本也是这样的原理,不过最好是利用一些多开器,登陆多点的QQ邮箱账号会比较流畅一些,然后用软件一个一个的切换APP进行群发邮件会

    头条留评论软件有没有好用的呢?
    今天整一个今日头条留言软件,对于留言YYPOST是优势是比较大的存在,因为他往往专注一些下拉定位的优点,像今日头条这样,还是需要一些特殊下拉定位的,因为他新闻有长有短,有图有视频的,所以综合起来定位是比较难的,如果用POST也不是很轻松可以破解他的加密参数。这个脚本也是有一个不好的地方就是换号会比较麻烦,您电

    单网页生成神器
    最近新技术,网页生成机占领了整个网络的半壁江山,效果很疯狂,虽然不知道能持续多久,作为开发软件的领头者,一直在找收录的方法,一直在努力创新着,一直被人模仿,却从没有被超越过,这个网页生成机,已经出来有一段时间了,一直没有拿出来分享,醉过醉过,它是利用的一些小小收录漏洞整的,您最好用一些老站域名,进行

关闭
快速回复 返回列表 返回顶部
本站自动发贴软件,是现在最流行的做脚本软件,这种发贴工具,不但发贴收录快,而且抢占好的先机,完全自由编辑,实现针对性群发模拟操作,软件可以顶贴,也可以发贴,可以兼容支持Discuz、PHPWind、Dvbbs三大主流论坛,有手机验证码收件,邮件收发的功能,支持验证码识别,注册问题识别,多线程任务,自动上传头像,自动激活注册邮件,兼容防注册插件,本站软件原创正版,更新效率最快的原创软件。 『网络推广软件』『自动发帖软件』『 自动发帖