拷贝字符串到手机剪贴板
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);
  }

安卓端

  1. 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);
            }
        });
    }
}
  1. 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);
}

点赞(2)

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

返回
顶部