Могу ли я программно включать и отключать WiFi на Windows Phone 8.1?
Если да, то как включить или отключить Wi-Fi на С#?
Собственно, я уже делаю это на другой платформе:
<DllImport("coredll.dll")> Public Shared Function DevicePowerNotify(ByVal device As String, ByVal state As CEDEVICE_POWER_STATE, ByVal flags As Integer) As Integer
End Function
<DllImport("coredll.dll")> Public Shared Function SetDevicePower( _
ByVal pvDevice As String, _
ByVal df As Integer, _
ByVal ds As CEDEVICE_POWER_STATE) As Integer
End Function
Public Shared Sub wifi_power_on()
Try
DevicePowerNotify("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\cardname", CEDEVICE_POWER_STATE.D0, 1)
SetDevicePower("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\cardname", 1, CEDEVICE_POWER_STATE.D0)
Application.DoEvents()
Catch
End Try
End Sub
Public Shared Sub wifi_power_off()
Try
DevicePowerNotify("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\cardname", CEDEVICE_POWER_STATE.D4, 1)
SetDevicePower("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\cardname", 1, CEDEVICE_POWER_STATE.D4)
Application.DoEvents()
Catch
End Try
End Sub
Но в Wondows Phone 8.1, я не знаю, как сделать то же самое в С# на этот раз.
Боюсь, это не поддержка так же?
Это то, что я попробовал на С#:
[DllImport("coredll.dll")]
public static extern int DevicePowerNotify(string device, CEDEVICE_POWER_STATE state, int flags);
[DllImport("coredll.dll")]
public static extern int SetDevicePower(string pvDevice, int df, CEDEVICE_POWER_STATE ds);
public static void wifi_power_on()
{
try
{
DevicePowerNotify("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\cardName", CEDEVICE_POWER_STATE.D0, 1);
SetDevicePower("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\cardName", 1, CEDEVICE_POWER_STATE.D0);
Application.DoEvents();
}
catch
{
}
}
public static void wifi_power_off()
{
try
{
DevicePowerNotify("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\cardName", CEDEVICE_POWER_STATE.D4, 1);
SetDevicePower("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\cardName", 1, CEDEVICE_POWER_STATE.D4);
Application.DoEvents();
}
catch
{
}
}
В Windows Phone (все версии от 7.0 до текущего 8.1) вы не можете программно отключать или отключать WiFi. Это связано с тем, что платформа постоянно сохраняет эти настройки в пользовательском элементе управления.
Самое близкое, что вы можете получить, - это программно запустить страницу настроек WiFi, в которой пользователь может изменить настройку:
await Launcher.LaunchUriAsync(new Uri("ms-settings-wifi:"));