CocosCreator系列——利用Java原生实现文本赋值粘贴功能

CocosCreator系列——利用Java原生实现文本赋值粘贴功能

节后第一天先来点干货(●ˇ∀ˇ●),这个功能超级简单,直接看代码

//点击将拷贝的字符串传到Java层
    onCopyClick() {
        if (cc.sys.os == cc.sys.OS_ANDROID) {
            jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "copyText", "(Ljava/lang/String;)V", "拷贝的字符串");
        }
    },
    //得到拷贝后的字符串
    onGetCopyClick() {
        var s = "得到的字符串为:";
        if (cc.sys.os == cc.sys.OS_ANDROID) {
            s += jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "getCopyText", "()Ljava/lang/String;");
        }
        console.log(s);
    },

Java代码:首先声明用来存储拷贝文本的变量

    public static String copyTextStr = " ";

接收js传过来的参数:安卓11以后setText方法就已经过时了,要用setPrimaryClip(),这个方法

    public static void copyText(final String text){
        copyTextStr = text;
        app.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                ClipboardManager clipboardManager  = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
                assert clipboardManager != null;
                clipboardManager.setPrimaryClip(ClipData.newPlainText(null,text));
            }
        });
        Log.e("拷贝的字符串为:",text);
    }

这个时候到需要粘贴的地方长按,就已经可以将赋值的文本粘贴了
项目中如果需要用到的话,直接调getCopyText()方法就可以了

    public static String getCopyText(){
        app.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                ClipboardManager clipboardManager  = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
                assert clipboardManager != null;
                if (clipboardManager.hasPrimaryClip()){
                    copyTextStr = clipboardManager.getPrimaryClip().getItemAt(0).getText().toString();
                }
            }
        });
        Log.e("得到的拷贝的字符串为:",copyTextStr);
        return copyTextStr;
    }

是不是超级简单 ~O(∩_∩)O

猜你喜欢

转载自blog.csdn.net/liupengxunzhuanshu/article/details/105949072