我正在使用 Unity 和 Tango SDK 开发 Tango 应用程序,但是,我需要能够检查设备的 Wifi 连接并相应地连接到 Wifi 网络。
考虑到这一点,我开始开发 Android Unity 网络插件,但在检查设备的连接性时遇到了麻烦;即使 Wifi 开启并且设备确实连接到 Wifi 网络,getActiveNetwork 仍然返回 null。
我花了几天时间寻找解决方法或替代实现,但我找不到任何可行的方法,下面是我在查看了我查看的许多与 Android 连接相关的问题后最终用于执行检查的代码,以及我在清单中使用的所有权限。
(我想指出,当通过 Unity C# 脚本调用时,我目前返回一个整数作为快速调试函数的一种方式,而现在该函数始终返回 0。)
public int IsConnectedToWifi(){
//SCCActivity activity = new SCCActivity();
ConnectivityManager cm = (ConnectivityManager) this.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm == null) return -2;
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null) { // connected to the internet
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
// connected to wifi
DebugToast(activeNetwork.getTypeName());
return 1;
//return activeNetwork.isConnected();
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
// connected to the mobile provider's data plan
DebugToast(activeNetwork.getTypeName());
return 2;
//return false;
}
}
else {
DebugToast("There is no active Network");
return 0;
//return false;
}
DebugToast("Failed to get a Connectivity Manager");
return -1;
//return false;
}
在 AndroidManifest 文件中:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
我真的很感激任何建议或指导,谢谢。