老板让做网站报价,快递网站模版,网站制作培训多少钱,网络营销的特点包括近段时间了解了一下VS2017开发安卓应用的一些技术#xff0c;特地把C#开发WebApp的一些过程记录下来#xff0c;欢迎大家一起指教、讨论#xff0c;废话少说#xff0c;是时候开始表演真正的技术了。。1、新建空白Android应用2、拖一个WebView控件进来3、打开模拟器Genymot… 近段时间了解了一下VS2017开发安卓应用的一些技术特地把C#开发WebApp的一些过程记录下来欢迎大家一起指教、讨论废话少说是时候开始表演真正的技术了。。 1、新建空白Android应用2、拖一个WebView控件进来 3、打开模拟器Genymotion选择一个系统版本启动 4、加载网页4.1 打开MainActivity.cs在OnCreate方法里添加2行代码protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the main layout resource SetContentView(Resource.Layout.Main); var web FindViewByIdWebView(Resource.Id.webView1); web.LoadUrl(http://www.baidu.com); }加载网页就是这样简单F5调试就可以看到模拟器有了变化打开了我们的应用并如期加载了网页 5、网页端调用手机APP后台方法5.1 打开MainActivity.cs重写OnCreate为如下protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); var webView new WebView(this); SetContentView(webView); webView.Settings.JavaScriptEnabled true; webView.AddJavascriptInterface(new CustomJSInterface(this), CSharp); webView.LoadUrl(http://192.168.0.113:8080/); }标红的是实现前端调用后台方法的关键新建CustomJSInterface.cspublic class CustomJSInterface : Java.Lang.Object { Context context; public CustomJSInterface(Context context) { this.context context; } [Export] [JavascriptInterface] public void ShowToast(string message) { Toast.MakeText(context, message, ToastLength.Short).Show(); } }而http://192.168.0.113:8080/是我们的Web站点大部分业务逻辑在网站里处理WebApp只是在外表包了一个壳5.2 我们再新建一个本地Web站点改动首页HTML主要功能是点击按钮会调用后台ShowToast这是个提示功能{ ViewBag.Title Home Page;}br /div classjumbotron button typebutton onClickCSharp.ShowToast(hello)由前端调用C#后台方法/button/div浏览器预览 5.3 VS2017按F5部署可以看的模拟器也正常把本地站点加载进来了点击获取前端JS返回的数据6、APP执行前端JS方法6.1 重写OnCreate // 必须重写WebView客户端 webView.SetWebViewClient(new CustomWebViewClient()); // 先打开首页 webView.LoadUrl(http://192.168.0.113:8080/); // APP主动获取前端数据 var btn FindViewByIdButton(Resource.Id.button1); btn.Click delegate { var callback new ReceiveValueCallback(); callback.OnReceiveValueCallback (message) { Toast.MakeText(this.ApplicationContext, message, ToastLength.Short).Show(); }; webView.EvaluateJavascript(GetData(), callback); };6.2 新建CustomWebViewClient.csclass CustomWebViewClient : WebViewClient { public override bool ShouldOverrideUrlLoading(WebView view, String url) { view.LoadUrl(url); return true; } }6.3 新建ReceiveValueCallback.cs这个类主要负责处理前端返回的数据public class ReceiveValueCallback : Java.Lang.Object, IValueCallback { public delegate void OnReceiveValueCallbackHandler(string message); public event OnReceiveValueCallbackHandler OnReceiveValueCallback; // 重写ReceiveValue方法 public void OnReceiveValue(Java.Lang.Object value) { OnReceiveValueCallback(value.ToString()); } }6.4 修改Index.html{ ViewBag.Title Home Page;}br /div classjumbotron button typebutton onClickCSharp.ShowToast(hello)由前端调用C#后台方法/button/divscript typetext/javascript function GetData() { return 123456789; }/script6.5 VS2017按F5部署6.6 点击按钮获取前端JS返回的数据 7、WebAPP使用疑问 7.1 细心的人可能注意到前端代码完全可以自己处理完业务那还有WebApp什么事情呢这时的APP完全就跟一个浏览器差不多7.2 确实是这样的WebApp相对与其他安卓APP来说是轻量级的只是一个壳子但是他也是有其合适的使用范围比如如果前端并没有数据持久化功能如纯JS前端这时要保存数据只能调用其他的WebApi而由于JS的特性可能会引起一些安全问题。或者根本没有第三方API数据需要保存在手机端JS也没有这种权限。所以既兼顾了像升级Web站点那样简便又有一些手机端的操作权限WebApp应运而生。原文https://www.cnblogs.com/lanxiaoke/p/8725370.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com