using UnityEngine;
public class AndroidToast : MonoBehaviour
{
#region
// 调用这个方法来显示Toast消息
public static void ShowToast(string message, int duration)
{
// 确保代码只在Android执行
if (Application.platform == RuntimePlatform.Android)
{
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast");
AndroidJavaObject context = activity.Call<AndroidJavaObject>("getApplicationContext");
activity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
// Toast.LENGTH_SHORT对应的是0,Toast.LENGTH_LONG对应的是1
AndroidJavaObject toastObject = new AndroidJavaObject("java.lang.String", message);
Toast.CallStatic<AndroidJavaObject>("makeText", context, message, duration).Call("show");
}));
}
}
#endregion
}
调用方法:
using UnityEngine;
using UnityEngine.UI;
public class SendMessageToAndroid : MonoBehaviour
{
[SerializeField] private Button shortMessage;
[SerializeField] private Button longMessage;
[SerializeField] private Button defaultMessage;
void Start()
{
shortMessage.onClick.AddListener(() =>
{
// 显示一个短时Toast消息
AndroidToast.ShowToast("这是一个短时Toast消息!", 0);
});
longMessage.onClick.AddListener(() =>
{
// 显示一个长时Toast消息
AndroidToast.ShowToast("这是一个长时Toast消息!", 1);
});
defaultMessage.onClick.AddListener(() =>
{
AndroidToast.ToastShow("这是一个 default 消息!");
});
}
}