也是在网上翻了很多资料,这里参考了一下网友的http://www.cnblogs.com/xiaozefeng/p/Unity_Android_IOS.html
但是他写的不全,导致写android程序eclipse最后会报错
他这里写道
Unity3D调用Android剪贴板
public class ClipboardTools { public static ClipboardManager clipboard = null; // 向剪贴板中添加文本 public void copyTextToClipboard(final Context context, final String str) { if (Lopper.myLooper() == null){ Looper.prepare(); } clipboard = (ClipboardManager) activity.getSystemService(Activity.CLIPBOARD_SERVICE); ClipData textCd = ClipData.newPlainText("data", str); clipboard.setPrimaryClip(textCd); handler.getLooper().quit(); } // 从剪贴板中获取文本 public String getTextFromClipboard() { if (clipboard != null && clipboard.hasPrimaryClip() && clipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) { ClipData cdText = clipboard.getPrimaryClip(); ClipData.Item item = cdText.getItemAt(0); return item.getText().toString(); } return null; } }
然而运行程序,必然报错
解决办法如下,以函数 向剪贴板中添加文本 为例因当新起一线程,代码如下
public void copyTextToClipboard(final Context activity, final String str) { new Thread(new Runnable() { @Override public void run() { Looper.prepare(); m_handler = new Handler() { public void handleMessage(Message msg) { clipboard = (ClipboardManager) activity.getSystemService(Activity.CLIPBOARD_SERVICE); ClipData textCd = ClipData.newPlainText("data", str); clipboard.setPrimaryClip(textCd); } }; Message message = new Message(); m_handler.sendMessage(message); Looper.loop(); } }).start(); }
这样就正确了
接下来:
Android剪贴板项目导入Unity3D
1. 在Untiy3D项目的Assets目录下创建Plugins目录。
2. 在Plugins目录下创建Android目录。
3. 在Android 目录下创建bin目录。
4. 在bin 目录下放置你编写的类的jar包。
然后
Unity3D调用Android类与方法
#if UNITY_ANDROID AndroidJavaObject androidObject = new AndroidJavaObject("com.test.ClipboardTools"); AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); if (activity == null) return ; // 复制到剪贴板 androidObject.Call("copyTextToClipboard", activity, input); // 从剪贴板中获取文本 String text =androidObject.Call<String>("getTextFromClipboard"); #endif
ok,ios还没研究