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