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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章