unity中呼叫android的剪下板
阿新 • • 發佈:2019-01-28
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