Android 应用自动更新代码
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
public class Update extends BaseActivity {
public ProgressDialog pBar;
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.update);
Dialog dialog = new AlertDialog.Builder(Update.this).setTitle("系统更新")
.setMessage("发现新版本,请更新!")// 设置内容
.setPositiveButton("确定",// 设置确定按钮
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
pBar = new ProgressDialog(Update.this);
pBar.setTitle("正在下载");
pBar.setMessage("请稍候...");
pBar
.setProgressStyle(ProgressDialog.STYLE_SPINNER);
downFile("http://url:8765/OA.apk");
}
}).setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
// 点击"取消"按钮之后退出程序
}
}).create();// 创建
// 显示对话框
dialog.show();
}
void downFile(final String url) {
pBar.show();
new Thread() {
public void run() {
HttpClient client = new DefaultHttpClient();
// params[0]代表连接的url
HttpGet get = new HttpGet(url);
HttpResponse response;
try {
response = client.execute(get);
HttpEntity entity = response.getEntity();
long length = entity.getContentLength();
InputStream is = entity.getContent();
FileOutputStream fileOutputStream = null;
if (is != null) {
File file = new File(Environment
.getExternalStorageDirectory(), "OA.apk");
fileOutputStream = new FileOutputStream(file);
byte[] buf = new byte[1024];
int ch = -1;
int count = 0;
while ((ch = is.read(buf)) != -1) {
// baos.write(buf, 0, ch);
fileOutputStream.write(buf, 0, ch);
count += ch;
if (length > 0) {
}
}
}
fileOutputStream.flush();
if (fileOutputStream != null) {
fileOutputStream.close();
}
down();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
void down() {
handler.post(new Runnable() {
public void run() {
pBar.cancel();
update();
}
});
}
void update() {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File("/sdcard/OA.apk")),
"application/vnd.android.package-archive");
startActivity(intent);
}
}
分享到:
相关推荐
Visual Studio 2010是一款强大的集成开发环境(IDE),而"vs2010自动更新版本号插件"则为开发者提供了一个便利的工具,使得在VS2010中自动更新程序版本号成为可能。这个插件的出现,极大地简化了手动修改版本号的...
本篇文章将详细探讨如何在Git项目中自动更新版本信息,以及与GitHub的集成。 一、Git与版本信息 1. Git的基本概念:Git是一个开源的版本控制系统,由Linux之父Linus Torvalds创建。它以快照式的版本管理方式,记录...
标题中的“谷歌浏览器不自动更新版本102.0.4976.0”指的是谷歌浏览器(Google Chrome)的一个特定版本,它不具有自动更新功能。通常,谷歌浏览器会定期检查并自动下载新版本以确保用户使用的是最新、最安全的版本。...
标题中的“vs自动更新版本号插件+源码,支持中文”揭示了这是一个针对Visual Studio(简称VS)的插件,其主要功能是自动更新软件的版本号,并且该插件已经进行了汉化,能够支持中文环境。这个插件基于...
7. **测试与调试**:在实现自动更新版本号后,需要进行充分的测试,确保在不同编译配置(如Debug和Release)下都能正确工作,并且不会影响其他编译过程。 通过以上步骤,你就可以实现VS编译发布时根据SVN自动更新...
"autoUpdate自动更新版本"这个标题所指的,就是关于如何为CS应用程序实现一个自动更新机制。这样的机制使得软件能够检测新版本,并在后台下载、安装更新,以确保所有用户都能运行最新、最安全的程序版本。 描述中...
自动更新版本 AutoUpdater.NET 使用手册 自动更新版本是指在不需要人工干预的情况下,自动检查和安装更新的功能。AutoUpdater.NET 是一个基于 .NET 的自动更新组件,提供了简洁的配置文件和灵活的更新机制。在本文...
标题 "C/S自动更新版本程序源码" 描述中涉及的知识点主要集中在客户端/服务器(C/S)架构的软件更新机制上,特别是通过Visual Studio 2008和Remoting技术来实现。以下是对这些知识点的详细说明: 1. C/S架构:C/S...
这个自动更新版本的功能是确保漫游器始终能够利用最新的技术和算法来提高其抓取效率和准确性,同时修复可能存在的问题,提升用户体验。 在自动更新版本的过程中,有以下几个关键知识点: 1. **版本控制**:阿里...
【C# 自动更新版本安装程序】 在C#开发中,构建一个自动更新版本的安装程序对于保持软件的最新状态至关重要。本文档将详细介绍如何实现这一功能,确保客户端始终能够获得最新的应用程序版本。 **一、自动更新实现*...
在Android应用开发中,自动更新版本程序是必不可少的一部分,它能确保用户始终使用最新、最安全的软件版本。Google Play作为Android应用的主要分发平台,提供了API和机制来实现这一功能。本文将深入探讨如何利用Java...
在.NET开发领域,自动化是提升效率的关键之一,而"dotnet-AutoUpgrade自动更新版本软件"就是这样的一个工具,它专为.NET应用程序设计,旨在简化软件版本升级的过程。这个项目通常被称为"Auto_Upgrade",它能够帮助...
- 除了自动更新版本号,还应结合使用版本控制系统(如Git),对源代码进行版本控制,以便追踪历史变更、协同开发和回滚错误变更。 9. **工具软件的角色**: - 自动化工具在软件开发中扮演着重要角色,可以提高...
在每次构建时,插件会自动更新版本号,使得构建产物具有唯一的标识,这对于版本控制和问题追踪非常有帮助。 此外,版本号自动更新插件还可能提供其他高级特性,如自定义版本号格式、版本号锁定(在特定阶段禁止自动...
在IT行业中,尤其是在软件开发领域,自动升级和自动更新机制是至关重要的功能,它能够确保用户始终使用到最新的软件版本,提高用户体验并保障安全性。针对C#编程语言,本资源集合提供了一系列关于“自动升级”、...
本篇将详细介绍一个针对Delphi开发的程序自动更新控件,该控件适用于XE7到XE10.4版本,并且经过了安装测试,源码开放,允许开发者进行定制。 这个名为"AutoUpgrader_XE6"的控件,专为Delphi XE6及更高版本设计,它...
"AutoBuildNo"可能是实现自动版本号修改的源代码或脚本文件,可能包含处理RC文件和更新版本号的逻辑。 实现这一功能的方法可能包括编写批处理脚本、使用Perl、Python或其他脚本语言,或者利用Visual Studio的预构建...
本话题将探讨如何使用PyQT5构建一个自动更新功能,针对Python 2.7的程序进行版本检查和服务端更新。 首先,我们需要理解自动更新的核心流程: 1. **版本检测**:应用启动时,通过HTTP请求向服务器发送一个版本查询...
注意,自动更新版本号时,如果增量编译,有时vc编译器并没有马上感应到有更新,未必将最新的rc文件编译进来。而 rebuild all 时,肯定生效。 pe文件操作类,下载别人的源码,稍微修改一点点,感谢原作者。