cocosCreator获取手机剪切板内容

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

复制功能

ts代码

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

ts 复制代码
     public static copyToClipBoard(str) {
          if (sys.platform == sys.Platform.ANDROID) {
               PlatformMgr.callNativeFn("copyToClipboard", str);
          }
     }
ts 复制代码
    static async callNativeFn(funcName: string, jsonMsg?: string): Promise<{ msg: string, isSucc: boolean }> {
        if (sys.platform != sys.Platform.ANDROID) // TODO: web 暂时只支持 Android 调用
            return

        let fn = PlatformMgr.Ins._platformIns[funcName]
        if (typeof (fn) == "function") { // 支持重写方法
            return await fn(funcName, jsonMsg)
        } else {
            return await PlatformMgr.Ins._platformIns.callNativeFn(funcName, jsonMsg)
        }
    }
ts 复制代码
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相关的库文件

java 复制代码
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;

调用代码:

java 复制代码
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代码

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

java代码

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;
    }
相关推荐
shakingWaves23 分钟前
better auth worker on cloudflare
typescript·cloudflare·auth·better-auth
折哥的程序人生 · 物流技术专研8 小时前
第4篇:Lambda 简化策略模式(Java 8+)
java·设计模式·策略模式·函数式编程·lambda·代码简化·扩充系列
私人珍藏库8 小时前
[Android] PeakFinder AR v4.8.89 (山峰全景识别+增强现实山峰查看器)
android·人工智能·智能手机·ar·工具·软件
researcher-Jiang8 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
烽火聊员10 小时前
查看Android Studio错误日志
android·ide·android studio
西门吹-禅10 小时前
java springboot N+1问题
java·开发语言·spring boot
DLYSB_10 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯
weixin_BYSJ198710 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
AI小码10 小时前
LLM 应用的缓存工程:当每次 API 调用都在燃烧成本
java·人工智能·spring·计算机·llm·编程·api
Hui Baby11 小时前
Spring Security
java·后端·spring