目录
之前有三个基础篇
2.进阶篇 Toast、打开应用、安装/卸载应用、获取应用列表、对话框、发送广播、获取所有包名
转自https://blog.youkuaiyun.com/sgnyyy/article/details/53048552
官方例子
using UnityEngine;
using System;
class ExampleClass : MonoBehaviour
{
private static DateTime selectedDate = DateTime.Now;
class DateCallback : AndroidJavaProxy
{
public DateCallback() : base("android.app.DatePickerDialog$OnDateSetListener") { }
void onDateSet(AndroidJavaObject view, int year, int monthOfYear, int dayOfMonth)
{
selectedDate = new DateTime(year, monthOfYear+1, dayOfMonth);
}
}
void OnGUI ()
{
if (GUI.Button(new Rect (15, 15, 450, 75), string.Format("{0:yyyy-MM-dd}", selectedDate)))
{
AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
activity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
new AndroidJavaObject("android.app.DatePickerDialog", activity, new DateCallback(), selectedDate.Year, selectedDate.Month-1, selectedDate.Day).Call("show");
}));
}
}
}
注意java接口和Unity对应
1.如果java接口单独是一个脚本,unity对应为:包名.接口名,即“com.xxx.xxx.interfaceName”
安卓端
unity端
public class FaceTrackPcData : AndroidJavaProxy
{
public FaceTrackPcData() : base("com.xhsj.pc_to_android.FaceTrackPcData") { }
public void faceData(string paramString)
{
if (receiveDataCall != null)
{
receiveDataCall(paramString);
}
}
public delegate void ReceiveDataCallback(string msg);
public ReceiveDataCallback receiveDataCall;
}
2.如果java接口是在类内部,unity对应为:包名.类名¥接口名,也就是官方的例子