DeviceNetworkInformation.IsCellularDataEnabled总是返回false。

4

我最近安装了Windows Phone 8.1模拟器来测试一些现有的应用程序,但遇到了这个问题:DeviceNetworkInformation.IsCellularDataEnabled(在Microsoft.Phone.Net.NetworkInformation命名空间中)始终返回false。

public void UpdateDataEnabled()
{
    _dataEnabled = DeviceNetworkInformation.IsCellularDataEnabled 
        || DeviceNetworkInformation.IsWiFiEnabled;
}

DeviceNetworkInformation.IsCellularDataEnabled = false

我知道连接实际上是在工作的,因为我仍然能够执行HTTP请求。如果我在8.0.x仿真器中运行完全相同的代码,就不会有任何问题。

我还尝试将项目和所有库更新为Windows Phone Silverlight 8.1应用程序,以查看是否可以解决此问题,但没有成功。我检查了所有功能和ID_CAP_NETWORKING仍然被勾选。

如果我使用Windows 8获取网络状态方法编写纯Windows Phone 8.1 XAML应用程序,则模拟器经过测试并且运作正常。只是我的Silverlight应用程序无法正常工作。

我原本以为Windows Phone Silverlight应用程序应该继续在Windows Phone 8.1设备上运行。我有遗漏什么吗?


2
你在模拟器选项中启用了“假GSM”吗?默认情况下它是禁用的。 - Jurion
是的,虚假GSM也已启用。如果我使用Windows 8获取网络状态的方法编写一个纯Windows Phone 8.1 XAML应用程序,则经过测试并且可以正常工作。但是对于我的Silverlight应用程序却无法正常工作。 - jmshapland
是的,同样问题占用了一整天时间去查找代码错误,结果变量的顺序完全搞乱了... 希望你遇到的问题类似,并且能在这里找到人来解决!我很愿意帮忙(我也在开发8.1应用),只是我的知识也有限哈哈。 - Jurion
1
我认为这只是模拟器的问题。 - csharpwinphonexaml
2
为什么不使用IsNetworkAvailable而是检查Wi-Fi和移动数据? - Rishabh876
显示剩余2条评论
2个回答

2

我有同样的问题,我按照verdesrobert和Rishabh876建议的方法操作了。这只是模拟器的问题,所以我添加了一个条件来检查应用程序是否在模拟器上运行。

    public bool IsNetworkAvailable()
    {
        if (DeviceNetworkInformation.IsNetworkAvailable)
        {
            if (Microsoft.Devices.Environment.DeviceType == DeviceType.Emulator)
            {
                return true;
            }
            else if ((DeviceNetworkInformation.IsWiFiEnabled || DeviceNetworkInformation.IsCellularDataEnabled) && NetworkInterface.NetworkInterfaceType != NetworkInterfaceType.None)
            {
                return true;
            }
        }
        return false;
    }

我不太喜欢那个解决方法,如果有更好的解决方案,请告诉我。


这似乎只是模拟器的一个错误,因为在我的手机上运行良好。添加您建议的代码似乎已经解决了问题。我可能会添加预处理指令进行调试,以便只在模拟器上运行,直到他们修复该问题。 - jmshapland
在 WP8.1 设备上测试时,我没有遇到这个问题,但是一旦发布到商店后,信息就无法正常调用。在测试时,我没有勾选 ID_CAP_NETWORKING 权限,但它仍然可以工作,这是 WP 商店的要求吗? - Matthew
我相信你必须设置能力才能使其工作。目前我不再开发WP应用程序,所以我不确定这个问题是否已经解决。 - Tomas Kosar

1

看起来 WP8.1 模拟器只向 WP8.1 应用程序提供该信息。
我非常确定 7.1 应用程序在 WP8.1 设备上可以正常工作。


你是对的,这似乎只是模拟器的问题。在实际设备上运行良好。 - jmshapland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接