2016-08-23 124 views
0

我正嘗試在Android設備上啓用或禁用Unity中的Wifi。 我試圖做我在論壇上發現的不同的事情,但沒有成功。在Unity中的Android上啓用/禁用Wifi

如果我做的:

using(var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) 
{ 
    string wifiServiceName = unityPlayer.Get<string>("WIFI_SERVICE"); 
    using(var wifiManager = unityPlayer.Call<AndroidJavaObject>("getSystemService", wifiServiceName)) 
    { 
     wifiManager.Call("setWifiEnabled", false); 
    } 
} 

我有一個錯誤,說WIFI_SERVICE不存在。

如果我做的:

using (AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity")) 
{ 
    using (var wifiManager = activity.Call<AndroidJavaObject>("getSystemService","wifi")) 
    { 
     wifiManager.Call<AndroidJavaObject>("setWifiEnabled", false); 
    } 
} 

我有一個錯誤,說setWifiEnabled不是一個函數,(也不是一個靜態函數,如果我做CallStatic)。

我有我的manifest.xml正確合併,我可以檢查我擁有應用程序管理器上的所有權限。

我花了幾個小時試圖找出如何做到這一點,我卡住了!

有沒有人知道一個簡單的方法來做到這一點?

非常感謝您的幫助,

本傑明

回答

1

Android DocsetWifiEnabled需要bool作爲參數和返回bool了。

你的第二個代碼已經差不多了。 你得到了正確的參數,但未能提供返回類型。你把AndroidJavaObject作爲返回類型而不是bool

在您的第二個代碼中,只需將wifiManager.Call<AndroidJavaObject>("setWifiEnabled", false);替換爲wifiManager.Call<bool>("setWifiEnabled", false);即可。

這應該工作,假設您已獲得您的許可。給你一個建議是把你的代碼放在try catch子句中。如果你的Android函數調用中有某些內容爲空或失敗,這將防止一些奇怪的行爲。

public bool setWifiEnabled(bool enabled) 
{ 
    using (AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity")) 
    { 
     try 
     { 
      using (var wifiManager = activity.Call<AndroidJavaObject>("getSystemService", "wifi")) 
      { 
       return wifiManager.Call<bool>("setWifiEnabled", enabled); 
      } 
     } 
     catch (Exception e) 
     { 
     } 
    } 
    return false; 
} 

public bool isWifiEnabled() 
{ 
    using (AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity")) 
    { 
     try 
     { 
      using (var wifiManager = activity.Call<AndroidJavaObject>("getSystemService", "wifi")) 
      { 
       return wifiManager.Call<bool>("isWifiEnabled"); 
      } 
     } 
     catch (Exception e) 
     { 

     } 
    } 
    return false; 
} 
+0

權限'<用途的許可機器人:名稱= 「android.permission.ACCESS_WIFI_STATE」/>'和 '<使用的許可機器人:名稱= 「android.permission.CHANGE_WIFI_STATE」/>' – Programmer

相關問題