1. 程式人生 > >unity中呼叫android的剪下板

unity中呼叫android的剪下板

1.首先新建一個android工程,ClipboardTools類不用繼承任何類,包名com.androidclicp.clip,然後在該類中填寫如下程式碼(jdk等級4.0版本以上,不然會報錯)


public class ClipboardTools {
public static ClipboardManager clipboard = null;

// 向剪貼簿中新增文字
public void copyTextToClipboard(final Context activity, final String str) throws Exception
{
if(Looper.myLooper() == null
) { Looper.prepare(); } Handler handler = new Handler(); 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"
; } }

寫完就ok了,然後把該工程匯出jar包,只需要匯出你所寫的這個類就可以了

2.然後在unity工程中新建一個Plugins/Android/bin, 然後把你所寫的jar包匯入即可,在unity新建一個指令碼,來使用jar包中的東西,

此時只寫功能函式,具體指令碼不寫了,如下:


#if UNITY_ANDROID
AndroidJavaObject androidObject = new AndroidJavaObject("com.androidclicp.ClipboardTools");
AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
if (activity == null)
return;
// 複製到剪貼簿
androidObject.Call("copyTextToClipboard", activity, qq.text);
// 從剪貼簿中獲取文字
string text = androidObject.Call<string>("getTextFromClipboard");
Debug.Log(text + "------------------------");
#endif

導進去的報名com.androidclicp.clip是指你android工程中的報名,而不是你匯出之後自己定義的那個包名,這個包名是隨便去的,unity中引用的還是android中的包名,具體講就是你寫的那個android指令碼的名稱空間。

3,使用unity釋出andrid版本的時候也要在設定中改一下最小sdk版本,這樣就ok了,原始碼demo網盤連結http://pan.baidu.com/s/1gfyUV3X