代码语言:javascript复制
package com.luoyikun.clipboard;
import android.app.Activity;
import android.app.Fragment;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.os.Bundle;
import com.unity3d.player.UnityPlayer;
public class MyClipboard extends Fragment {
String m_gameObjectName;
String m_funcName;
private Context unityContext;
private Activity unityActivity;
private static final String TAG = "MyClipboard";
public void UnityFunc(String gameObjectName, String funcName)
{
m_gameObjectName = gameObjectName;
m_funcName = funcName;
}
private static MyClipboard Instance = null;
public static MyClipboard GetInstanceByAndroid(Activity activity,Context context)
{
if (Instance == null)
{
Instance = new MyClipboard();
Instance.unityActivity = activity;
Instance.unityContext = context;
activity.getFragmentManager().beginTransaction().add(Instance, TAG).commit();
}
return Instance;
}
public static MyClipboard GetInstance()
{
if(Instance == null)
{
Instance = new MyClipboard();
//Instance.gameObjectName = gameObject;
Instance.unityActivity = UnityPlayer.currentActivity;
if (Instance.unityActivity == null)
{
Instance.CallUnity("Instance.unityActivity == null");
}
Instance.unityContext = Instance.unityActivity.getBaseContext();
if (Instance.unityContext == null)
{
Instance.CallUnity("Instance.unityContext == null");
}
UnityPlayer.currentActivity.getFragmentManager().beginTransaction().add(Instance, TAG).commit();
}
return Instance;
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setRetainInstance(true); // 这一句很重要,保存对该Fragment的引用,防止在旋转屏幕等操作时时丢失引用(Fragment隶属于Activity)
}
// 调用 Unity
// gameObjectName 为接受消息的Unity 中 GameObject 的名字
// functionName 为接受消息的GameObject 挂载 C# 脚本中的函数名
// _content 为发送给Unity 的内容
public void CallUnity( String _content)
{
UnityPlayer.UnitySendMessage(m_gameObjectName, m_funcName, _content);
}
public void CopyToClipboard(String text)
{
//获取剪贴板管理器:
ClipboardManager cm = (ClipboardManager) unityActivity.getSystemService(Context.CLIPBOARD_SERVICE);
// 创建普通字符型ClipData
ClipData mClipData = ClipData.newPlainText("Label", text);
// 将ClipData内容放到系统剪贴板里。
cm.setPrimaryClip(mClipData);
}
}
unity端调用
代码语言:javascript复制 public static void CopyToB(string phone)
{
AndroidJavaObject pluginObject = new AndroidJavaClass("com.luoyikun.clipboard.MyClipboard").CallStatic<AndroidJavaObject>("GetInstance");
pluginObject.Call("CopyToClipboard", phone);
}