xamarin.forms 版本自动更新(针对android)
1.首先同过url地址下载文件,这里必须要启用单独一个下载线程
new Thread(run).Start();
通过url下载的方法
public void run()
{
int receivedBytes = 0;
int totalBytes = 0;
string dirPath = "/sdcard/updateVersion/version";
var filePath = Path.Combine(dirPath, "hz_android.apk");
URL url = new URL(urlToDownload);//urlToDownload 下载文件的url地址
HttpURLConnection conn = (HttpURLConnection)url.OpenConnection();
conn.Connect();
Stream Ins = conn.InputStream;
totalBytes = conn.ContentLength;
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
else
{
if (File.Exists(filePath))
{
File.Delete(filePath);
}
}
using (FileStream fos = new FileStream(filePath, FileMode.Create))
{
byte[] buf = new byte[512];
do
{
int numread = Ins.Read(buf, 0, 512);
receivedBytes += numread;
if (numread <= 0)
{
break;
}
fos.Write(buf, 0, numread);
//进度条代码
if (progessReporter != null)
{
DownloadBytesProgress args = new DownloadBytesProgress(urlToDownload, receivedBytes, totalBytes);
progessReporter.Report(args);
}
} while (true);
}
//调用下载的文件进行安装
installApk(filePath);
}
private void installApk(string filePath)
{
var context = Forms.Context;
if (context == null)
return;
// 通过Intent安装APK文件
Intent intent = new Intent(Intent.ActionView);
intent.SetDataAndType(Uri.Parse("file://" + filePath), "application/vnd.android.package-archive");
//Uri content_url = Uri.Parse(filePath);
//intent.SetData(content_url);
intent.SetFlags(ActivityFlags.NewTask);
context.StartActivity(intent);
}
xamarin.forms 版本自动更新(针对android)的更多相关文章
- C#.Net版本自动更新程序及3种策略实现
C#.Net版本自动更新程序及3种策略实现 C/S程序是基于客户端和服务器的,在客户机编译新版本后将文件发布在更新服务器上,然后建立一个XML文件,该文件列举最新程序文件的版本号及最后修改日期.如程序 ...
- Android App版本自动更新
App在开发过程中,随着业务场景的不断增多,功能的不断完善,早期下载App的用户便无法体验最新的功能,为了能让用户更及时的体验App最新版本,在App开发过程加入App自动更新功能便显得尤为重要.更新 ...
- Android(2)—Mono For Android App版本自动更新
0.前言 公司Android查询的项目已经开始,整体采用Java后台+App前台来实现,由于项目小,App这块就我一个人开发,首先需要研究的是:Android版本的更新升级问题:本人经过近一周的学习整 ...
- ASP.NET网站版本自动更新程序及代码[转]
1.自动更新程序主要负责从服务器中获取相应的更新文件,并且把这些文件下载到本地,替换现有的文件.达到修复Bug,更新功能的目的.用户手工点击更新按钮启动更新程序.已测试.2.环境VS2008,采用C# ...
- 张高兴的 Xamarin.Forms 开发笔记:为 Android 与 iOS 引入 UWP 风格的汉堡菜单 ( MasterDetailPage )
所谓 UWP 样式的汉堡菜单,我曾在"张高兴的 UWP 开发笔记:汉堡菜单进阶"里说过,也就是使用 Segoe MDL2 Assets 字体作为左侧 Icon,并且左侧使用填充颜色 ...
- Android 版本自动更新
截图如下: 代码实现如下: package com.update.apk; import java.io.BufferedReader; import java.io.File; import jav ...
- Android实现App版本自动更新
现在很多的App中都会有一个检查版本的功能.例如斗鱼TV App的设置界面下: 当我们点击检查更新的时候,就会向服务器发起版本检测的请求.一般的处理方式是:服务器返回的App版本与当前手机安装的版本号 ...
- Android(3)—Mono For Android App版本自动更新(2)
0.前言 这篇博文是上一篇的延续,主要是修改上一个版中的BUG和优化一些待完善的项,也算是结贴,当然还有需要完善的,等日后项目中用到的时候再单独写出来吧,本篇主要写升级改进的部分: 改进1.修复[BU ...
- 微信小程序版本自动更新弹窗提示
代码如下: onLaunch () { if (wx.canIUse('getUpdateManager')) { const updateManager = wx.getUpdateManager( ...
随机推荐
- 微信webview
会露出灰色的地步 https://segmentfault.com/q/1010000004295291 有说用iscroll5来解决,但是明显有bug啊 https://segmentfault.c ...
- JavaWeb前端:JQuery
Jquery基本概念 什么是Jquery Jquery是一个开源的,集成了Javascript,CSS,DOM,AJAX的前端框架:它诞生于2006年,最初是为了简化JavaScript开发而产生的, ...
- mina-http之坑
TCP是流式协议,不保证一次通信传输完整的包,当这种情况发生在mina-http时会产生严重的bug,图中红框部分只是将前后收到的数据拼在一起,但下面处理的还是最近收到的不完整的msg:此为大坑! 轻 ...
- easyui datagrid 分页
//初始化dategrid $('#tt').datagrid({ url:null, pagination:true, pageSize:, pageNumber:, rownumbers:true ...
- Python函数参数学习笔记
1.Python中函数参数类型可分为五种: f(x):x为位置参数: f(x,n=2):n为默认参数,调用时可以省略参数n,如f(5); f(*args):*args表示把args这个list或tup ...
- C# 中的 Static
今天测试了一下C#中 static 的初始化顺序: 1.调用时才初始化, 2.按照调用顺序初始化 3.先执行类的静态方法,然后初始化静态变量及方法 4.继承时,先执行子类的静态方法,然后执行父类的静态 ...
- mpu
#include "mpu.h" #include "mem.h" #include "my_errno.h" #include " ...
- GDB配置与.gdbinit的编写
GDB配置与.gdbinit的编写 当 GDB(即 GNU Project Debugger)启动时,它在当前用户的主目录中寻找一个名为 .gdbinit 的文件:如果该文件存在,则 GDB 就执行该 ...
- DeepLearning之路 (五) CNN
自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet.cuda-convnet2. ...
- Bootstrap <基础二十八>列表组
列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 cl ...