• 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 调用
                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)
            }
        }
    
    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;
        }
    
  • 相关阅读:
    (生物信息学)R语言绘图初-中-高级——3-10分文章必备——Venn图(韦恩图)(初级)
    UDS诊断系列介绍03-DCM
    前端进阶-前端web缓存
    线上宕机问题(索引问题)
    excel文档打不开怎么修复?
    3. 云计算中的网络基础知识
    弘辽科技:拼多多选品的方式有哪些?有什么选品技巧?
    基于C语言实现的自动打乱九宫格并且还原
    07 【Sass语法介绍-控制指令】
    单例模式浅析
  • 原文地址:https://blog.csdn.net/Silent_F/article/details/139748350