在网上查了一下,按照网上的来写好像都不行,没碰过安卓原生开发的,希望有大佬教教我。
public static ClipboardManager mClipboard = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (null == mClipboard) {
mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
}
}
public static void copyMsgToClipBoard(String msg){
if (mClipboard != null) {
ClipData textCd = ClipData.newPlainText("", msg);
mClipboard.setPrimaryClip(textCd);
}
}
public static String pasteFromClipboard() {
String getMsg = "";
if (!mClipboard.hasPrimaryClip()) {
return getMsg;
}
ClipData clipData = mClipboard.getPrimaryClip();
ClipData.Item item = clipData.getItemAt(0);
if(item != null && item.getText() != null){
CharSequence str = item.getText().toString();
getMsg += str;
Log.i("cocos", "getMsg FromClipboard is : " + getMsg);
}
return getMsg;
}
喔,谢谢大佬!但是为什么要在onCreate里面执行那段代码呢?
这个会闪退的,在cocos线程获取剪切板内容,需要在android ui线程获取剪切板
public static Semaphore semaphore = new Semaphore(1);
public static String content;
public static String getClipBoardContents(){
try {
semaphore.acquire();
}catch (Exception e)
{
e.printStackTrace();
}
app.runOnUiThread(new Runnable() {
@Override
public void run() {
log.i("JSContent","1");
ClipboardManager cm = (ClipboardManager)app.getSystemService(CLIPBOARD_SERVICE);
if (!cm.hasPrimaryClip()) {
content = "无内容";
}
ClipData data = cm.getPrimaryClip();
log.i("JSClipBoardContent","2");
ClipData.Item item = data.getItemAt(0);
content= item.getText().toString();
log.i("JSContent",content);
try {
semaphore.release();
}catch (Exception e)
{
e.printStackTrace();
}
}
});
try {
semaphore.acquire();
}catch (Exception e)
{
e.printStackTrace();
}
try {
semaphore.release();
}catch (Exception e)
{
e.printStackTrace();
}
return content;
}
1赞
没搞过java和原生,我这样写是能用的,但是不知道会不会有其他问题
可能是打开方式不一样吧?
当我在APP内设置剪切板内容,再读取剪切板就可以获取,但是我在记事本复制了一段文字,进去APP无法获取剪切板内容,请问这个怎么解决,比较着急~