创建 MobileBroadbandAccount 对象

由于 MobileBroadbandAccount 对象表示网络帐户,因此需要网络帐户 ID 才能创建此类对象。 从网络列表启动移动宽带应用时,它将接收网络帐户 ID,用作磁贴启动协定的参数。

如果应用直接从其磁贴激活,则没有与磁贴启动协定关联的参数,并且必须获取 MobileBroadbandAccount 类的 AvailableNetworkAccountIds 静态属性的值。 这会返回字符串的只读集合,其中每个字符串都是单个帐户 ID。 如果此方法返回具有单个字符串的集合,则无需执行任何进一步操作。 以下 JavaScript 代码示例演示如何执行此操作:

var myNetworkAccountId;
var allNetworkAccountIds = Windows.Networking.NetworkOperators.MobileBroadbandAccount.availableNetworkAccountIds;

if (allNetworkAccountIds.size == 1)
{
  myNetworkAccountId = allNetworkAccountIds[0]; 
}

如果返回的集合包含多个字符串,则需要来自运行应用程序的最终用户的输入。 一种方法是循环访问集合,为集合中的每个帐户 ID 创建 MobileBroadbandAccount 对象,然后使用 对象的属性 (例如,电话号码) 填充列表框控件。 此控件将呈现给最终用户,用户进行选择后,可以释放所有其他 MobileBroadbandAccount 对象。

获得帐户 ID 后,调用 MobileBroadbandAccount 类的 CreateFromNetworkAccountId 静态方法。 下面的代码示例演示如何使用 JavaScript 执行此操作:

var myNetworkAccountId = "{95499FEF-1579-4547-A0BE-FF271ADBBE76}";
var myNetworkAccountObject = Windows.Networking.NetworkOperators.MobileBroadbandAccount.createFromNetworkAccountId(myNetworkAccountId);

MobileBroadbandAccount.AvailableNetworkAccountIds 返回空列表

如果应用不受信任,则 属性将返回一个空集合,而不是引发异常,因为用户可以在其计算机上拥有来自多个网络操作员的帐户。 AvailableNetworkAccountIds 属性仅返回允许应用元数据包查看的帐户 ID。 由于 AvailableNetworkAccountIds 属性检查每个帐户 ID 在检索时是否具有与之关联的设备,因此即使 CreateFromNetworkAccountId 不引发访问被拒绝异常,此属性也可以返回空集合。

如果未检测到网络硬件,或者网络硬件没有可访问的 SIM 卡,则可能会发生这种情况。 确定返回的集合为空的确切原因的一种简单方法是查看 WWAN 日志。 收集日志后,在文本日志文件中搜索包含 文本 AvailableNetworkAccountIds 的条目。