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);
}
}
转载:http://www.inandroid.cn/bbs/thread-2976-1-1.html
分享到:
相关推荐
以下是对【标题】"android 应用客户端自动升级"及【描述】中提及的实现方法的详细解释: 首先,我们要理解自动升级的基本流程: 1. 检测新版本:应用启动时或者在合适的时间点,通过网络请求服务器获取最新版本信息...
### Android应用客户端自动升级知识点详解 #### 一、概述 在移动互联网时代,为了提供更好的用户体验及服务,软件开发者往往需要频繁地对应用程序进行更新。对于Android应用而言,实现客户端的自动升级不仅可以...
Android 客户端自动升级代码及“应用程序未安装”的解决办法 调试的时候能正常下载新版程序,但是在打开安装时一直提示“应用程序未安装”,纠结了半天终于发现是程序的签名问题。 手机安装的apk签名要与新下载的...
在Android应用开发中,自动升级和更新功能是提高用户体验、保证软件安全性和稳定性的关键环节。这个话题将深入探讨如何在Android应用中实现这一机制,包括检查更新、下载更新包、安装更新等步骤。 首先,我们需要...
本文将深入探讨如何使用Java编程实现Android应用(Apk)的自动升级机制,确保用户能够在无需手动操作的情况下获取最新的应用版本。 首先,我们需要理解Android应用的更新流程。自动升级通常分为三个主要步骤:检测...
总的来说,Delphi 11.3为Android应用的自动升级提供了全面的支持,让开发者能够更专注于应用的核心功能,而不是底层的实现细节。通过学习和应用"Delphi11.3安卓自动升级"中的知识,开发者可以快速地在自己的项目中...
对于 Android 应用来说,实现自动升级功能是提高用户体验和确保应用始终处于最新状态的重要手段。本篇文章将深入探讨如何在 Xamarin 平台上为 Android 应用实现自动升级功能。 首先,我们要理解自动升级的基本流程...
### Android应用程序的自动更新升级 #### 一、引言 随着移动互联网的发展,应用程序更新成为提升用户体验、修复问题和引入新功能的重要手段。对于Android应用程序而言,具备版本检测和自动更新的功能不仅能够确保...
在Android平台上,实现应用的自动升级是一项常见的需求,它能够帮助开发者及时推送给用户最新的软件更新,提升用户体验并确保应用的安全性。以下是一份详细的关于如何在Android中实现app自动升级的知识点概述。 1. ...
在Android开发中,实现自动升级更新功能是提升用户体验和确保应用始终处于最新状态的重要手段。这一功能使得用户无需手动去应用商店寻找并下载更新,只需点击一次即可完成更新过程。以下将详细介绍如何在Android应用...
Java以其跨平台的特性,丰富的类库和强大的面向对象编程能力,成为了Android应用开发的首选语言。通过研究源码,我们可以了解到如何利用Java进行高效且稳定的应用程序开发。 1. **整体架构设计** - **模块化**:...
AGV( Automated Guided Vehicle)小车管控系统是现代制造业中不可或缺的一部分,尤其在物流、仓储等领域广泛应用。...这一创新方法在实际应用中显示出巨大的潜力,为未来智能仓储和制造业自动化提供了新的技术途径。
2. **自动更新管理**:客户端会定期检查已安装应用的更新,并提供一键升级功能,确保用户始终使用最新版本的软件。 3. **安全与隐私**:由于所有应用均来自开源社区,用户可以审查源代码,确保没有隐藏的恶意行为或...
本项目名为“Android应用程序的自动更新升级(自身升级、通过tomcat)”,是一个Android应用源码开发Demo,非常适合毕业设计学习者深入理解自动更新机制。 首先,我们要讨论的是“自身升级”这一概念。在Android...
在构建Android淘宝客户端的高性能、高稳定性应用框架时,开发者面临着许多挑战,包括但不限于系统资源管理、用户体验优化、网络通信安全、数据存储与同步、异常处理以及性能监控等。以下是对这些关键领域的深入探讨...
本文将详细探讨Android应用程序的升级过程,包括如何获取应用的当前版本信息、设计升级流程以及与服务器进行版本检查。 首先,每个Android APK在`AndroidManifest.xml`中都有其版本标识,包括`versionCode`和`...
首先,我们需要理解的是,Android应用的自动升级通常通过OTA(Over-The-Air)方式进行,这涉及到服务器端、客户端两部分的协同工作。服务器端负责存储新的APK文件,提供下载链接;客户端则检测更新,下载新版本,并...
在Android应用开发中,定期对应用进行升级和更新是保持软件功能完善和安全的重要环节。本实例将探讨如何实现客户端和服务端的协同更新机制,确保用户可以顺利接收并安装最新的应用版本。 一、客户端更新流程 1. **...
这篇文档将深入解析"Android应用源码之口袋微博服务器客户端代码.zip"这一资源,它包含了一个Android应用程序的源代码,该程序是针对口袋微博服务的客户端。我们将探讨这个客户端代码的关键组成部分,以及如何理解并...