2016-08-23 38 views
0

AndroidデバイスでWi-FiをUnityから有効または無効にしようとしています。 フォーラムで見つけたさまざまなことを成功させようとしました。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); 
    } 
} 

は、私は(私はCallStaticを行う場合も、静的関数)setWifiEnabledが関数ではないというエラーが発生しています。

私は自分のmanifest.xmlを正しくマージしました。アプリケーションマネージャのすべての権限があることを確認できます。

私はそれを行う方法を理解しようと数時間を費やし、私は立ち往生しています!

誰も簡単な方法を知っていますか?あなたの助けのための

どうもありがとう、

ベンジャミン

答えて

1

Android Docによると、setWifiEnabledは、パラメータや戻りすぎboolとしてboolを取ります。

2番目のコードはほぼ同じです。 パラメータは正しく設定されていますが、戻り値の型は指定できませんでした。戻り値の型はboolではなくAndroidJavaObjectとなります。

2番目のコードでは、wifiManager.Call<AndroidJavaObject>("setWifiEnabled", false);wifiManager.Call<bool>("setWifiEnabled", false);に置き換えてください。

あなたの許可を得ていると仮定すると、これはうまくいくはずです。 1つのアドバイスは、あなたのコードを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

関連する問題