UWP:如何发送USSD请求。 (调用SendMessageAndGetReplyAsync时获取异常)

时间:2016-05-08 15:39:10

标签: win-universal-app windows-10-mobile uwp-xaml

请帮我发送ussd请求。

IReadOnlyList<string> networkAccIds = MobileBroadbandAccount.AvailableNetworkAccountIds;
if (networkAccIds.Count == 0)
{
    return;
}
string networkAccountId = networkAccIds[0];
UssdSession session = UssdSession.CreateFromNetworkAccountId(networkAccIds[0]);

我的手机中安装了2张SIM卡。但是networkAccIds.Count总是为零。我的错是什么?

更新1:

感谢 Jerry Li 。我有网络标识符。我有一个新问题。当我这样做时:

UssdReply reply = await session.SendMessageAndGetReplyAsync(new UssdMessage("*100#")); 

我得到例外:

发生意外异常:System.Runtime.InteropServices.COMException(0x80070032):不支持请求。

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()


   at uwp_1.MainPage.<GetBalance>d__1.MoveNext()

为什么我会例外?

1 个答案:

答案 0 :(得分:0)

  

我的手机中安装了2张SIM卡。但networkAccIds.Count始终为零。我的错是什么?

您正在访问移动宽带运营商使用的特权API UssdSessionMobileBroadbandAccount)。它需要在包清单中声明special-use capability

<Capabilities>
  <r:Capability Name="cellularDeviceIdentity"/>
  <r:Capability Name="cellularDeviceControl"/>
  <r:Capability Name="cellularMessaging"/>
</Capabilities>

请确保您已在包清单中声明了相应的special-use capabilities。显示如何使用移动宽带网络API的Mobile broadband sample供您参考。

此外:

您的应用程序可以运行,您可以在手机上进行测试,但它不会通过WACK(Windows应用认证套件),因为它使用的是special-use capability。此类应用程序可用于公司应用程序(不需要发布到Windows应用商店),MS内部或OEM /合作伙伴。