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