unity3d android平台剪貼簿的實現

來源:互聯網
上載者:User

標籤:

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

unity3d android平台剪貼簿的實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.