VS2015(Xamarin)开发安卓WebApp笔记
安安 2017-09-20 来源 :网络 阅读 1069 评论 0

摘要:有关WebApp的开发,大多数人都用了第三方框架,如Cordova等。我这里没有用到这类框架,而是新建了一个WebView嵌入Assets(本地资源)来完成这个App,由于第一个练习App希望对初学者有所帮助。

有关WebApp的开发,大多数人都用了第三方框架,如Cordova等。我这里没有用到这类框架,而是新建了一个WebView嵌入Assets(本地资源)来完成这个App,由于第一个练习App希望对初学者有所帮助。

这是一个快递快速查询的App,现在添加了几个比较火的快递,调用查询接口来自kuaidi100(有一定概率查询出错,估计是屏蔽措施,多查几次),前端UI采用frozenui(腾讯团队),入门快demo齐全

先来效果图

 VS2015(Xamarin)开发安卓WebApp笔记

 

1、权限配置,既然是最快递查询,摄像头权限是必不可少。查询历史等最好也要存起来,我这里通过sqlite存到了sd卡。

manifest节点下

    <uses-permission android:name="android.permission.INTERNET" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

    <uses-permission android:name="android.permission.CAMERA" />

    <uses-permission android:name="android.permission.VIBRATE" />

    <uses-permission android:name="android.permission.FLASHLIGHT" />

    <uses-feature android:name="android.hardware.camera" />

    <uses-feature android:name="android.hardware.camera.autofocus" />

  

2、OnCreate初始化

            SetContentView(Resource.Layout.Main);

            webView = (WebView)FindViewById(Resource.Id.webView);

            try

            {

                var dbPath = "/sdcard/zExpress/";

                var dbFileName = "express.db";

          //初始化sqlite本地库,将来升级加表

                Common.InitDBAndUpdate(dbPath, dbFileName);

                //html通过js访问后台C#

                webView.AddJavascriptInterface(new WebInterface(this, dbPath, dbFileName, webView) as Java.Lang.Object, "CSharp");

                //避免html

                webView.SetWebViewClient(new CommonWebViewClient());

          //js权限 

                WebSettings settings = webView.Settings;

                settings.JavaScriptEnabled = true;

                settings.JavaScriptCanOpenWindowsAutomatically = true;

                

                webView.LoadData("", "text/html", "utf-8");

                webView.LoadUrl("file:///android_asset/index.html");

            }

            catch (Exception e)

            {

                Common.Log("OnCreate", e.Message + "\n" + e.StackTrace);

            }

 

 

3、非首页按返回应该是webview页面返回,在首页按两次返回键退出,以下是OnKeyDown代码

            //webView返回 ,首页点返回 不做 webView返回处理,应该是退出

            if (e.Action == KeyEventActions.Down && keyCode == Keycode.Back && webView.CanGoBack() && !webView.Url.ToLower().EndsWith("index.html"))

            {

                webView.GoBack();   //后退

                return true;    //已处理            }

 

            //再按一次退出程序

            if (keyCode == Keycode.Back && e.Action == KeyEventActions.Down)

            {

                if (!lastBackKeyDownTime.HasValue || DateTime.Now - lastBackKeyDownTime.Value > new TimeSpan(0, 0, 2))

                {

                    Toast.MakeText(this.ApplicationContext, "再按一次退出程序", ToastLength.Short).Show();

                    lastBackKeyDownTime = DateTime.Now;

                }

                else

                {

                    Finish();

                }

                return true;

            }

            return base.OnKeyDown(keyCode, e);

 

4、js插件选取zepto(用法与jQuery一致,而且针对移动端优化),移动端触摸tap取代click

会jQuery就能零基础使用zepto;关于click事件将会有300毫秒延迟,也是一部分人觉得web在移动端响应非常慢的原因之一,这是由于很久以前为了解决兼容pc的click事件与触摸双击冲突出现的。按理说应该用touchstart、touchend结合处理。这里用tap解决了很多问题,你不会发现有延迟。

 

5、为什么打包这么大apk

原本我引用ExfSoft.Json(很小的json插件)、Mono.Data.Sqlite生成只有不到4MB,但是扫码插件Zxing引入后暴涨到接近10MB

 

6、引用Zxing扫码生成报错问题(没VPN)

刚引入Zxing即使不使用生成都会报错(本人报的还是乱码),清理解决方案再生成可以发现提示连接到谷歌下载android_m2repository_r16.zip失败,并提示本地路径C:\Users\你的用户名\AppData\Local\Xamarin\Android.Support.v4\版本号,里面有个0kb的android_m2repository_r16.zip文件,请FQ下载这个文件粘贴到这里。

 

提示:安装vs2015会联网,没有VPN安装十分漫长,我这里的webApp只是主要完成了功能,界面切换如果需要动画还需要优化

编译后的apk、源码、android_m2repository_r16.zip,请移步云盘

链接: //pan.baidu.com/s/1bokyrZh 密码: weye

 

补充:Zxing、Support.V4  链接://pan.baidu.com/s/1boapdAv 密码: 8w3s

 

文采有限,净贴代码,敬请谅解


希望这篇文章可以帮助到你。总之,同学们,你想要的职坐标WEBAPP频道都能找到!

本文由 @安安 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved