这里是使用的android 自己的Exec 执行ping 并且获取到最终结果
废话不多,先上java 代码
public static void RuntimeExecAsync(Context context, final String command) {
Thread thread = new Thread() {
public void run() {
StringBuffer stringBuffer = new StringBuffer();
Process p = null;
try {
p = Runtime.getRuntime().exec(command);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = stdInput.readLine()) != null) {
stringBuffer.append(line);
stringBuffer.append("\n");
}
} catch (Throwable e) {
}
if (p != null) {
p.destroy();
p = null;
}
String result = stringBuffer.toString();
UnityPlayer.UnitySendMessage("GameObjectName", "MethodName", result); //这里返回给unity最后的值,需要自己定义好的GameObjectName 和MethodName
}
};
thread.setName("RuntimeExecAsync");
thread.start();
}
接下来C# 代码
public static void RuntimeExecAsync(string command)
{
#if (UNITY_ANDROID && !UNITY_EDITOR)
try
{
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
using (AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
{
currentActivity.CallStatic("RuntimeExecAsync", currentActivity, command);
}
}
}
catch (System.Exception e)
{
}
#endif
}
上调用
RuntimeExecAsync("ping -c 1 -w 2 192.168.1.1");