我的做法:
首先将复制和粘贴功能在java中写好,导出jar包,再由Unity去调用。
package com.firefly.utils;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipData.Item;
import android.content.ClipboardManager;
import com.unity3d.player.UnityPlayer;
public class CallAndroidClipboard
{
protected static void RunSafe(Runnable r)
{
UnityPlayer.currentActivity.runOnUiThread(new Runnable()
{
public void run()
{
try
{
CallAndroidClipboard.this.run();
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
}
//粘贴
@SuppressLint({"NewApi"})
public static void GetClipboardContent() {
Activity activty = UnityPlayer.currentActivity;
ClipboardManager clipboard = (ClipboardManager)activty.getSystemService("clipboard");
ClipData clip = clipboard.getPrimaryClip();
if ((clip != null) && (clip.getItemCount() > 0))
{
ClipData.Item item = clip.getItemAt(0);
//向unity场景中名字为0的物体上方法名为GetClipboardContentOnAndroid_Callback的方法发送消息
UnityPlayer.UnitySendMessage("0", "GetClipboardContentOnAndroid_Callback", item.getText().toString());
}
}
//复制
public static void SetClipboardContent(String text) {
RunSafe(new Runnable()
{
@SuppressLint({"NewApi"})
public void run()
{
Activity activty = UnityPlayer.currentActivity;
ClipboardManager clipboard = (ClipboardManager)activty.getSystemService("clipboard");
clipboard.setPrimaryClip(ClipData.newPlainText("text", CallAndroidClipboard.this));
}
});
}
}复制功能在C#中直接调用就可以了:
try
{
using (AndroidJavaClass jc = new AndroidJavaClass("com.firefly.utils.CallAndroidClipboard"))
{
jc.CallStatic("SetClipboardContent", content);
}
}
catch (System.Exception ex)
{
Debug.Log(ex.Message);
}粘贴因为没有找到在unity中直接调用java代码就能得到字符串的函数所以这里用的是将字符串发到unity中(如果有更好的方法,欢迎指出):
先调用这个方法让消息发送过来。
try
{
using (AndroidJavaClass jc = new AndroidJavaClass("com.firefly.utils.CallAndroidClipboard"))
{
jc.CallStatic("GetClipboardContent");
}
}
catch (System.Exception ex)
{
Debug.Log(ex.Message);
}
//粘贴
public static string Content ="";
public void GetClipboardContentOnAndroid_Callback(string content)
{
Content = content;
}这里的Content就是粘贴的内容。