当前位置: 首页 > news >正文

cocosCreator获取手机剪切板内容

最近游戏中需要加上复制粘贴的功能,这个时候就涉及到安卓原生层的东西。步骤如下:
公开文章地址,见个人博客

复制功能

ts代码

调用代码,在需要复制的地方调用即可。

     public static copyToClipBoard(str) {if (sys.platform == sys.Platform.ANDROID) {PlatformMgr.callNativeFn("copyToClipboard", str);}}
    static async callNativeFn(funcName: string, jsonMsg?: string): Promise<{ msg: string, isSucc: boolean }> {if (sys.platform != sys.Platform.ANDROID) // TODO: web 暂时只支持 Android 调用returnlet fn = PlatformMgr.Ins._platformIns[funcName]if (typeof (fn) == "function") { // 支持重写方法return await fn(funcName, jsonMsg)} else {return await PlatformMgr.Ins._platformIns.callNativeFn(funcName, jsonMsg)}}
import { NativeMgr } from "../../module/native/NativeMgr";export class PlatformBase {// 最终调用 natvie 接口async callNativeFn(funcName: string, jsonMsg?: string) {return new Promise<{ msg: string, isSucc: boolean }>((resolve) => {NativeMgr.Ins.callNativeFunc((msg: string, isSucc: boolean) => {resolve({ msg: msg, isSucc: isSucc })}, funcName, jsonMsg)})}
}

java代码

放在你自己的逻辑中,放在AppActivity.java中即可。前面需要import相关的库文件

import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;

调用代码:

public static void copyToClipboard(String textToCopy) {// 获取剪贴板管理器ClipboardManager clipboardManager = (ClipboardManager) getActivity().getApplicationContext().getSystemService(Context.CLIPBOARD_SERVICE);// 创建 ClipData 对象ClipData clipData = ClipData.newPlainText("Copied Text", textToCopy);// 将 ClipData 设置到剪贴板clipboardManager.setPrimaryClip(clipData);try {JSONObject jsonobj = new JSONObject();jsonobj.put("type", "copyText");jsonobj.put("code", "1");Log.d("copyToClipboard",  jsonobj.toString());String str = String.format("NativeAndroid.javaCallback(\'%s\')", jsonobj.toString());
//                    CocosJavascriptJavaBridge.evalString(str);callJsGlobalFunc(str);} catch (Exception e) {}}

获取剪切板内容

ts代码

     public static copyToClipBoard(str) {if (sys.platform == sys.Platform.ANDROID) {let android = new AndroidNative();android.getText("getText");}}
export class AndroidNative implements INativeCaller {getText(funcName: string, jsonMsg: string = "{}") {   let getText = native.reflection.callStaticMethod(this._activityName, funcName, "()Ljava/lang/String;");console.log("剪切板内容")}
}

java代码

    public static String getText(){ClipboardManager clipboard = (ClipboardManager) getActivity().getApplicationContext().getSystemService(Context.CLIPBOARD_SERVICE);ClipData clip = clipboard.getPrimaryClip();if (clip != null && clip.getItemCount() > 0) {Log.d("剪切板内容 = ",clip.getItemAt(0).coerceToText(getActivity().getApplicationContext()).toString());return clip.getItemAt(0).coerceToText(getActivity().getApplicationContext()).toString();}return null;}
http://www.lryc.cn/news/377972.html

相关文章:

  • SAP Web IDE 安装使用
  • Excel 常用技巧(六)
  • 微软修复Wi-Fi驱动高危漏洞 影响Windows所有版本 可通过局域网发起攻击
  • 喜马拉雅项目调整
  • 【C++】基础知识--inline(内联)关键字以及与宏的区别
  • opencv的RGB 颜色表
  • __autoload 函数和sql_autoload_register函数
  • Python 中国象棋游戏【含Python源码 MX_011期】
  • wps要会员才能把pdf分开,这不纯属智商税吗
  • springBoot+mongoDB项目中,使用MongoFactory、MongoTemplate分页条件查询,增删查改
  • Leetcode236 二叉树两节点的最近公共祖先
  • Web的UI自动化基础知识
  • 【我是产品经理_注册安全分析报告】
  • Java智慧工地源码 5G智慧工地系统源码 使用SAAS部署 三维可视化管理,与一线生产过程相融合,集成数据后台,统一前端入口,呈现多方项目信息;
  • lock_wait_timeout
  • 【可控图像生成系列论文(二)】MimicBrush 港大、阿里、蚂蚁集团合作论文解读2
  • Linux时间子系统6:NTP原理和Linux NTP校时机制
  • 边缘微型AI的宿主?—— RISC-V芯片
  • MySQL—navicat创建数据库表
  • html做一个画柱形图的软件
  • Pyshark——安装、解析pcap文件
  • java中的Random
  • PyMuPDF 操作手册 - 01 从PDF中提取文本
  • ResNet——Deep Residual Learning for Image Recognition(论文阅读)
  • java基础·小白入门(五)
  • 微观时空结构和虚数单位的关系
  • go-zero使用goctl生成mongodb的操作使用方法
  • 服务器新硬盘分区、格式化和挂载
  • Openldap集成Kerberos
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据