VS2015(Xamarin)开发安卓WebApp笔记

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

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

先来效果图

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,请移步云盘

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

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

时间: 2024-10-08 08:07:47

VS2015(Xamarin)开发安卓WebApp笔记的相关文章

VS2015开发安卓应用笔记(一)

安装篇 环境虽然搭建的不稳定,不过还是可以开发的,又加了两个环境变量不知道有没有效果.待测. 加的两个环境变量是 ① 添加环境变量 ANDROID_SDK_HOME: D:\Android\ ② 在path环境变量下追加路径下追加路径: D:\Android\platform-tools;D:\Android\tools; 修改了一下CPU的虚拟技术 整体来说用c#写安卓的代码挺有意思.代码风格和写法跟用java写的基本类似,只不过有一些方法名不同而已.因为之前没写过安卓程序也没怎么开发过jav

安卓手机应用开发培训讲义笔记和心得(Java和Mono两种模式)

培训内容    —————————————————————————————————————————————————————————————————— 昨天夏主要讲了两个方面的安卓手机开发 一:Java语言开发手机安卓 ① 准备发软件工具  环境   (可以直接本地搭建环境) 开发IDE:Eclipse(仅次于VS的强大IDE) 其它一大堆的东西:Android SDK  模拟器   SDK JDK DAT ②  window下搭建Eclipse+andro开发环境 安装步骤:一般首先安装ava运

Xamrin开发安卓笔记(二)

安装篇 Xamrin开发安卓笔记(一) 昨天调理一天AAPT.EXE 被推出的问题(错误代码 error MSB6006: "aapt.exe" exited with code -1073741819),纠结一天到底是什么原因,寝食难安,后来想通了可能是安卓模拟器的原因.今早换了一个安卓SDK,到现在没出现AAPT的错误. 并且可以可视化布局(之前可视化布局很丑陋).然后接着写,暂时抛弃vs2015,因为2015的BUG直接影响我编写的感觉,所以先用vs2013 update4继续写

C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码

前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯,前面讲了那么多,是时候生成一个APK在真机上玩玩了. 今天的学习内容? 也只讲一个,如何打包生成安卓可安装的APK并精简大小. 正文 我记得,之前在写安卓方面的文章的时候,有人就问过我.Xamarin.Android为什么打包出来这么大?随便一个HelloWord就20-30MB? 嗯..今天我们就来解决

Xamrin开发安卓笔记(三)

安装片 Xamrin开发安卓笔记(一) Xamrin开发安卓笔记(二) 这次记录的是滚动条跟sqlite创建.存储和读取. 先说滚动条相关,这个是比较简单的知识点. 当有一屏的东西需要填写的时候例如下图 我们都知道如果点击第一个文本框则会出现输入法.但是如果没有滚动条的话,只能依靠输入法中的回车一个一个的向下移动(虽然现在输入法都带自我关闭功能),很不友好,那么就需要滚动条,看了一下布局属性有滚动条,但是使用起来不好使.隐约想起来,安卓有滚动条控件,就在左边找了一下,果真找到这个玩意了.如下图

ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习

首页 头条 文章 频道                         设计频道 Web前端 Python开发 Java技术 Android应用 iOS应用 资源 小组 相亲 频道 首页 头条 文章 小组 相亲 资源 设计 前端 Python Java 安卓 iOS 登录 注册 首页 最新文章 经典回顾 开发 Web前端 Python Android iOS Java C/C++ PHP .NET Ruby Go 设计 UI设计 网页设计 交互设计 用户体验 设计教程 设计职场 极客 IT技术

安卓第六天笔记--ListView

安卓第六天笔记--ListView 1.AdapteView AdapteView 继承ViewGroup它的本质是容器 AdapterView派生了3个子类: AbsListView AbsSpinner AdapterViewAnimation 这3个类是抽象类 实际使用中采用的是它们的子类 2.Adpate结构 3.使用ArrayAdapter完成ListView显示 ListView使用的是ListAdapter类型的适配器 由于只显示文字,所有使用ArrayAdapter ArrayA

vs2015 Xamarin.Android安装

Xamarin.Android 安装步骤,以vs2015为例 1,安装vs2015中的跨平台项,但是安装在国内肯定失败,因为需要到谷歌下载 当我们下载好vs2015准备开发Android时,发现会报一个错,不能为null 解决方法 1,下载 Android SDK 自己去百度   Android SDK 下载,百度会有下载项 2,安装Android SDK 打开Android SDK会发现自动获取一些信息,但是全部失败了,还是因为老原因,需要到谷歌下载 解决方法,通过代理下载 代理地址 mirr

C#使用Xamarin开发可移植移动应用进阶篇(7.使用布局渲染器,修改默认布局),附源码

前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 本篇..基本可以算是Xamarin在应用开发过程中的核心了..真的很很很重要.. 想学习的..想用的..建议仔细阅读..嗯..打酱油的 ..快速滑倒下面点个推荐 - - 哈哈哈... 今天的学习内容? 也只讲一个,关于Xamarin.Forms针对各个平台如何进行可定制化的布局操作. 也就是针对某个平台的细颗