求助:如何实现复制内容到剪贴板?

有个需求,需要点击按钮复制一个label中的内容,需要在全平台实现,有什么方法可以复制吗?很急

1赞

我也碰到这个需求了,请问你解决了么?有相关的插件实现么?

找了许久没找到全平台的都是要调用各个平台的,请问解决了么?

ios android 单写吧!

兄弟你的问题解决了么,我的是单独写的,可是只能做到这个app之内复制粘贴

:hushed:怎么复制呢

又看到这个帖子浮上岸,特来填坑
//网页
var save = function (e)
{
e.clipboardData.setData(‘text/plain’, this.data.OrderNum);
e.preventDefault();
}.bind(this);
document.addEventListener(‘copy’, save);
document.execCommand(‘copy’);
document.removeEventListener(‘copy’, save);

android:
String str = "copyToClipboard in " + text;
System.out.println(text);
try {

			final ClipboardManager clipboard = (ClipboardManager)myContext.getSystemService(myContext.CLIPBOARD_SERVICE);
			ClipData textCd = ClipData.newPlainText("data", text);
			clipboard.setPrimaryClip(textCd);
			System.out.println("copyToClipboard in1");
		} catch (Exception e) {
			e.printStackTrace();
		}

ios:
charp=(char)content.data();
NSString *nsMessage= [[NSString alloc] initWithCString:p encoding:NSUTF8StringEncoding];
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
pasteboard.string = nsMessage;

已用,有效!

4赞

兄弟你的content.data(),是什么东西,这个是我们传入的字符串么,我们传入的东西有什么格式要求么

std::string content

用安卓自带的方法和ios自带的剪贴板方法就行了,百度搜的就可用,你在cocos用js调一下就好了

//网页
var save = function (e)
{
e.clipboardData.setData(‘text/plain’, this.data.OrderNum);
e.preventDefault();
}.bind(this);
document.addEventListener(‘copy’, save);
document.execCommand(‘copy’);
document.removeEventListener(‘copy’, save);

我用微信打开,安卓的没问题,IOS的复制不出来。请问如何解决了吗

求问 怎么调用?

//oc 层

  • (void)copyClipboard:(NSString *)copiedString{
    UIPasteboard *appPasteBoard = [UIPasteboard generalPasteboard];
    NSLog(@“第一个复制信息------:%@”,appPasteBoard.string);
    appPasteBoard.persistent = YES;
    NSString *pasteStr =copiedString;
    [appPasteBoard setString:pasteStr];
    NSLog(@“第一个复制信息------:%@”,appPasteBoard.string);
    // UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@“完成复制”,nil),nil] message:nil delegate:nil cancelButtonTitle:NSLocalizedString(@“OK”,nil) otherButtonTitles:nil];
    // [alertview show];
    }

java 层
public static void CopyStrtoClipboard( String str) {
final String str_Roomid = str;
activty.runOnUiThread(new Runnable() {
@Override
public void run() {

            ClipboardManager cm = (ClipboardManager) Cocos2dxHelper.getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
            // 将文本内容放到系统剪贴板里。
            cm.setText(str_Roomid);
        }
    });
}

web端目前无法达到全平台支持

可以的,我已经搞定了,在论坛里找到了一段代码,如下:
webCopyString: function(str){
var input = str;
const el = document.createElement(‘textarea’);
el.value = input;
el.setAttribute(‘readonly’, ‘’);
el.style.contain = ‘strict’;
el.style.position = ‘absolute’;
el.style.left = ‘-9999px’;
el.style.fontSize = ‘12pt’; // Prevent zooming on iOS

	const selection = getSelection();
	var originalRange = false;
	if (selection.rangeCount > 0) {
		originalRange = selection.getRangeAt(0);
	}
	document.body.appendChild(el);
	el.select();
	el.selectionStart = 0;
	el.selectionEnd = input.length;

	var success = false;
	try {
		success = document.execCommand('copy');
	} catch (err) {}

	document.body.removeChild(el);

	if (originalRange) {
		selection.removeAllRanges();
		selection.addRange(originalRange);
	}

	return success;
},
1赞

String str = "copyToClipboard in " + text;
System.out.println(text);
try {

		final ClipboardManager clipboard = (ClipboardManager)myContext.getSystemService(myContext.CLIPBOARD_SERVICE);
		ClipData textCd = ClipData.newPlainText("data", text);
		clipboard.setPrimaryClip(textCd);
		System.out.println("copyToClipboard in1");
	} catch (Exception e) {
		e.printStackTrace();
	}

这个安卓的代码又不能在js里写,安卓里又放在哪里呢?没看懂

js 写一个与java 的交互,把你想传入的内容通过js传入到java