在 Xamarin 跨平台应用程序中进行 USSD 调用
Posted
技术标签:
【中文标题】在 Xamarin 跨平台应用程序中进行 USSD 调用【英文标题】:Make a USSD call in Xamarin Crossplatform app 【发布时间】:2018-12-04 10:53:24 【问题描述】:我想使用 C# 在 xamarin 跨平台应用程序中进行 USSD 调用,但我不知道从哪里开始。我见过的所有例子都是用java完成的。是否可以在不打开拨号器的情况下在我的应用程序中成功拨打 *270# 之类的 USSD 代码?如果是,请问如何?如果有任何帮助,我将不胜感激
【问题讨论】:
【参考方案1】:要使用 Xamarin 表单,您必须为 android 创建一个自定义渲染器:
在您的共享项目中创建一个接口:
public interface IUssdRenderer
void StartTransaction();
然后在你的android项目中:
使用系统; 使用Android.Content; 使用Android.OS; 使用 ussd.Renderers;
[程序集:Xamarin.Forms.Dependency(typeof(IUssdRenderer))] 命名空间 ussd.Droid.Renderers 公共类 UssdRenderer : IUssdRenderer 公共 Android.Net.Uri createUriFromString(string ussd)
String uri = "tel:";
foreach (char c in ussd.ToCharArray())
if (c == '#')
uri += Android.Net.Uri.Encode("#");
else
uri += c;
return Android.Net.Uri.Parse(uri);
public void StartTransaction()
var intent = new Intent(Intent.ActionCall, createUriFromString("*270#"));
Context ctx = Xamarin.Forms.Forms.Context;
ctx.StartActivity(intent);
你还得注册你的接口,我用的是棱镜:
public void RegisterTypes(IContainerRegistry containerRegistry)
containerRegistry.Register< IUssdRenderer, UssdRenderer>();
最后一点是确保您已启用呼叫权限:
右键单击Android项目>选项> Android应用程序
make sure CallPhone is selected
【讨论】:
【参考方案2】:您可以使用 Xamarin.Essentials PhoneDialer 拨打电话,请注意,由于 USSD 包含“#”,因此您需要对其进行 URL 编码。示例:
string code = "*123#";
PhoneDialer.Open(HttpUtility.UrlEncode(code));
【讨论】:
【参考方案3】:从左右收集后,我终于用 CrossMessaging 插件找到了我的问题的解决方案。
步骤如下:
-
创建您的项目并命名
在您的项目中从 nuget
Xam.Plugins.Messaging
安装
在 Android 项目 MainActivity 的 OnCreate 方法中添加以下行:
CrossMessaging.Current.Settings().Phone.AutoDial = true;
将android.permission.CALL_PHONE
添加到清单文件中。
如下拨打电话
try
var phonedialer = CrossMessaging.Current.PhoneDialer;
if (phonedialer.CanMakePhoneCall)
//Ussd call's
phonedialer.MakePhoneCall(HttpUtility.UrlEncode("#150#"));
//For normal calls
phonedialer.MakePhoneCall("9111111111")
catch (Exception exc)
await DisplayAlert("Error!!!!", exc.ToString(), "ok");
【讨论】:
以上是关于在 Xamarin 跨平台应用程序中进行 USSD 调用的主要内容,如果未能解决你的问题,请参考以下文章
.NET跨平台开发之Xamarin.Android介绍与生命周期