也是在網上翻了很多資料,這里參考了一下網友的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還沒研究
