拷贝字符串到手机剪贴板
cocoscreator版本:v3.5.2
android-sdk 31
微信小程序端
- 小程序直接调用api接口
wx.setClipboardData(Object object)
即可; - 相关文档地址:wx.setClipboardData
- 代码如下:
/**
* 拷贝文本
*/
public static setClipboardData(str:string) {
if (sys.platform != 'WECHAT_GAME') return;
window['wx'].setClipboardData({
data: str,
success: function () {
}
});
}
H5/浏览器
- 在Document对象上添加一个
textarea
或者input
,选中value内容,copy后销毁;代码如下:
/**
* 设置系统剪贴板的内容
* @param str
*/
public static setClipboardData(str: string): void {
if (!str || str == '') return uiManager.showTips('文本无效');
if (sys.platform == 'MOBILE_BROWSER' || sys.platform == 'DESKTOP_BROWSER'){
if (!document.queryCommandSupported('copy')) {
uiManager.showTips('浏览器不支持', ModeluType.FAIL);
return;
}
let textarea = document.createElement("textarea")
textarea.value = str
document.body.appendChild(textarea)
textarea.select()
textarea.setSelectionRange(0, str.length)
let result = document.execCommand("copy")
if(result){
uiManager.showTips('已成功复制到剪贴板!', ModeluType.SUCCESS);
}else{
uiManager.showTips('复制失败!', ModeluType.FAIL);
}
textarea.remove();
return;
}
uiManager.showTips('暂不支持该平台复制', ModeluType.FAIL);
}
安卓端
AppActivity.java
中编写静态方法,注意需要在UI线程中处理;
public class AppActivity extends CocosActivity {
public static AppActivity mAppActivity = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// DO OTHER INITIALIZATION BELOW
SDKWrapper.shared().init(this);
mAppActivity = this;
}
/*
设置系统剪贴板
*/
public static void setClipboardData(final String text) {
//一定要确保在UI线程操作
mAppActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
ClipboardManager cm = (ClipboardManager) mAppActivity.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("kk", text);
cm.setPrimaryClip(clip);
}
});
}
}
- TS中调用setClipboardData方法即可:
/**
* 拷贝文本
*/
public static setClipboardData(str:string) {
if (sys.platform != 'ANDROID') return;
jsb.reflection.callStaticMethod("com/cocos/game/AppActivity", "setClipboardData", "(Ljava/lang/String;)V",str);
}