活动记录 Cordova 与 OpenHarmony 混合开发实战

📌 模块概述

活动记录功能记录用户的所有操作,包括创建、编辑、删除笔记等。用户可以查看活动历史,了解自己的操作记录。

🔗 完整流程

第一步:记录活动

每当用户执行操作时,记录活动。

第二步:存储活动

将活动存储到数据库。

第三步:显示活动

显示活动历史列表。

🔧 Web代码实现

javascript 复制代码
async renderActivity() {
  const activities = await noteDB.getAllActivities();
  const sortedActivities = activities.sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt));

  return `
    <div class="page active">
      <div class="page-header">
        <h1 class="page-title">📅 活动记录</h1>
      </div>
      <div class="activity-list">
        ${sortedActivities.map(activity => `
          <div class="activity-item">
            <span class="activity-type">${activity.type}</span>
            <span class="activity-description">${activity.description}</span>
            <span class="activity-time">${Utils.formatDate(activity.createdAt)}</span>
          </div>
        `).join('')}
      </div>
    </div>
  `;
}

// 记录活动
async recordActivity(type, description) {
  try {
    const activity = {
      id: Date.now(),
      type: type,
      description: description,
      createdAt: new Date().toISOString()
    };

    await noteDB.addActivity(activity);
  } catch (error) {
    console.error('记录活动失败:', error);
  }
}

🔌 OpenHarmony 原生代码

typescript 复制代码
// ActivityPlugin.ets - 活动记录插件
import { webview } from '@kit.ArkWeb';
import { common } from '@kit.AbilityKit';
import { fileIo } from '@kit.CoreFileKit';

@NativeComponent
export class ActivityPlugin {
  private context: common.UIAbilityContext;

  constructor(context: common.UIAbilityContext) {
    this.context = context;
  }

  // 初始化插件
  public init(webviewController: webview.WebviewController): void {
    webviewController.registerJavaScriptProxy(
      new ActivityJSProxy(this),
      'activityPlugin',
      ['recordActivity', 'getActivities']
    );
  }

  // 记录活动
  public recordActivity(type: string, description: string): Promise<boolean> {
    return new Promise((resolve) => {
      try {
        const activitiesPath = this.context.cacheDir + '/activities.json';
        let activities: Array<any> = [];
        
        try {
          const content = fileIo.readTextSync(activitiesPath);
          activities = JSON.parse(content);
        } catch {
          activities = [];
        }

        activities.push({
          id: Date.now(),
          type: type,
          description: description,
          createdAt: new Date().toISOString()
        });

        fileIo.writeTextSync(activitiesPath, JSON.stringify(activities, null, 2));
        resolve(true);
      } catch (error) {
        console.error('Failed to record activity:', error);
        resolve(false);
      }
    });
  }

  // 获取活动列表
  public getActivities(): Promise<Array<any>> {
    return new Promise((resolve) => {
      try {
        const activitiesPath = this.context.cacheDir + '/activities.json';
        const content = fileIo.readTextSync(activitiesPath);
        const activities = JSON.parse(content);
        resolve(activities);
      } catch (error) {
        console.error('Failed to get activities:', error);
        resolve([]);
      }
    });
  }
}

// ActivityJSProxy.ets - JavaScript代理类
class ActivityJSProxy {
  private plugin: ActivityPlugin;

  constructor(plugin: ActivityPlugin) {
    this.plugin = plugin;
  }

  recordActivity(type: string, description: string): void {
    this.plugin.recordActivity(type, description).then(success => {
      console.log('Activity recorded:', success);
    });
  }

  getActivities(): void {
    this.plugin.getActivities().then(activities => {
      console.log('Activities:', activities.length);
    });
  }
}

📝 总结

活动记录功能展示了如何在Cordova与OpenHarmony混合开发中实现操作日志系统。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

相关推荐
子夜江寒2 小时前
基于 Python 使用 SVM、K-means与DBSCAN
python·支持向量机·kmeans
Blossom.1182 小时前
GPTQ量化实战:从零手写大模型权重量化与反量化引擎
人工智能·python·算法·chatgpt·ai作画·自动化·transformer
Elaine3362 小时前
实战教学:使用 Scrapy 爬取 CSDN 文章与用户头像
python·scrapy·网络爬虫
程序员佳佳3 小时前
文章标题:彻底抛弃OpenAI官方Key?实测GPT-5.2与Banana Pro(Gemini 3):这才是开发者的终极红利!
开发语言·人工智能·python·gpt·ai作画·api·midjourney
qq_356196953 小时前
day49_通道注意力机制 @浙大疏锦行
python
Yeats_Liao3 小时前
MindSpore开发之路(十四):简化训练循环:高阶API `mindspore.Model` 的妙用
人工智能·python·深度学习
写代码的【黑咖啡】4 小时前
Python中的Pandas:数据分析的利器
python·数据分析·pandas
机器懒得学习4 小时前
WGAN-GP RVE 生成系统深度技术分析
python·深度学习·计算机视觉
晨光32114 小时前
Day43 训练和测试的规范写法
python·深度学习·机器学习