本教程目的在于让大家熟悉并掌握CodeCompiler的使用。 大家可以参考下面的示例代码或观看视频。
使用AndroidCodeCompiler组件,调用Android原生接口
以下示例为Android调用原生接口实现震动
新建窗体,在窗体中加入Button控件和AndroidCodeCompiler组件,代码如下:
C#:
private void button1_Press( object sender, EventArgs e)
{
//安卓震动功能,可先网上搜索头文件与代码
AndroidCodeProvider provider = new AndroidCodeProvider();
provider.Imports.Add("android.os.Vibrator");
provider.MethodBody = @"
Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
vib.vibrate(200);
resultValue=""success"";";
//Run方法中provider参数填写代码,value参数对应provider参数中用户自行添加的变量value
this.androidCodeCompiler1.Run(provider, (obj, args) =>
{
if (args.isError == true)
MessageBox.Show(args.error);
else
Toast("Sucess");
});
}
打开其他应用,代码如下:
C#:
private void button1_Press( object sender, EventArgs e)
{
AndroidCodeProvider provider = new AndroidCodeProvider();
provider.Imports.Add("android.content.Intent");
provider.Imports.Add("android.content.ComponentName");
//打开不同的应用
//微信 com.tencent.mm com.tencent.mm.ui.LauncherUI
//QQ com.tencent.mobileqq com.tencent.mobileqq.activity.HomeActivity
provider.MethodBody = @"
Intent intent = new Intent();
ComponentName cmp = new ComponentName(""com.tencent.mm"",""com.tencent.mm.ui.LauncherUI"");
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(cmp);
activity.startActivity(intent);";
this.androidCodeCompiler1.Run(provider, (obj, args) =>
{
if (args.isError == true)
MessageBox.Show(args.error);
else
Toast("打开微信成功");
});
}
更多Android平台提供的系统接口可搜索 android getSystemService相关文档,例如https://www.cnblogs.com/rwind/p/5481237.html
使用js调用原生接口
以下示例为js调用原生接口实现震动,代码如下:
C#:
private void button1_Press( object sender, EventArgs e)
{
//Js震动功能,可先网上搜索代码
JsCodeProvider provider = new JsCodeProvider();
//platform相关功能详见 https://reactnative.cn/docs/vibration/ 里面的 API
provider.MethodBody = @"
if(platform.Vibration){
platform.Vibration.vibrate(value);
} else{
return ""Vibration null"";
}";
//Run方法中provider参数填写代码,value参数对应provider参数中用户自行添加的变量value
//由于在iOS上无法设置震动的持续时间,下面value参数只做参考
this.jsCodeCompiler1.Run(provider, 2000, (obj, args) =>
{
if (args.isError == true)
MessageBox.Show(args.error);
else
Toast("Sucess");
});
}
IOS中的js要使用platform对象,里面具体包含的服务详见 https://reactnative.cn/docs/vibration/ 最左边菜单中的API