使得应用可通过后台自动检查是否有最新版本,如果需要更新当前版本,将弹出对话框让用户选择是否在当前通过Market来更新软件。
Knowledge Points:
SharedPreferences: 一个轻量级的存储方法,类似于经常使用的.ini文件,它也是通过检索关键字来取得相应的数值。之所以是成为轻量级,是因为它所能应用的数值类型有限,对于存储较大数值,效率相对较低。
System.currentTimeMillis:将当前时间以毫秒作为单位来表示,用于比较两个时间的先后顺序。(其数值表示从1970-01-01 00:00:00直到当前时间的总毫秒数)
通过网络来读取信息:在checkUpdate()方法中包含了通过制定的URL来读取网络资源。具体操作步骤,请参考源代码。
Runnable: 在其内部的Run()方法中实现所要执行的任何代码,当这个runnable interface被调用后可以视作为新的线程。
public class Test extends Activity {
private Handler mHandler;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.front);
mHandler = new Handler();
/* Get Last Update Time from Preferences */
SharedPreferences prefs = getPreferences(0);
lastUpdateTime = prefs.getLong("lastUpdateTime", System.currentTimeMillis());
/* Should Activity Check for Updates Now? */
if ((lastUpdateTime + (24 * 60 * 60 * 1000)) < System.currentTimeMillis()) {
/* Save current timestamp for next Check*/
lastUpdateTime = System.currentTimeMillis();
SharedPreferences.Editor editor = getPreferences(0).edit();
editor.putLong("lastUpdateTime", lastUpdateTime);
editor.commit();
/* Start Update */
checkUpdate.start();
}
}
/* This Thread checks for Updates in the Background */
private Thread checkUpdate = new Thread() {
public void run() {
try {
URL updateURL = new URL("http://my.company.com/update");
URLConnection conn = updateURL.openConnection();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while((current = bis.read()) != -1){
baf.append((byte)current);
}
/* Convert the Bytes read to a String. */
final String s = new String(baf.toByteArray());
/* Get current Version Number */
int curVersion = getPackageManager().getPackageInfo("your.app.id", 0).versionCode;
int newVersion = Integer.valueOf(s);
/* Is a higher version than the current already out? */
if (newVersion > curVersion) {
/* Post a Handler for the UI to pick up and open the Dialog */
mHandler.post(showUpdate);
}
} catch (Exception e) {
}
}
};
/* This Runnable creates a Dialog and asks the user to open the Market */
private Runnable showUpdate = new Runnable(){
public void run(){
new AlertDialog.Builder(Test.this)
.setIcon(R.drawable.icon)
.setTitle("Update Available")
.setMessage("An update for is available!nnOpen Android Market and see the details?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked OK so do some stuff */
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:your.app.id"));
startActivity(intent);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked Cancel */
}
})
.show();
}
};
}
分为三个部分:
1.置于onCreate()方法中的程序用于判断当前时间是否需要检查更新(如果距离上次更新时间大于1天,将启动检查更新)
2.当以上条件满足时,启动checkUpdate来检查当前程序是否为最新版本。
3.如果确定版本已过期,那么将登录market,并直接指向当前程序页面。
分享到:
相关推荐
标题“WPF自动检测更新版本”和描述所提及的内容,主要涉及如何在WPF客户端应用中设计并实现这样一个系统。下面将详细介绍这个过程及其相关知识点。 一、版本管理 1. 版本号:每个软件发行版都有一个唯一的版本号,...
接下来,"UpdateSoftDemo"可能是一个示例程序,用于演示如何实现版本检测和更新功能。在JavaApk源码中,我们可以期待看到如何创建HTTP请求、解析响应内容(可能是XML或JSON)、比较版本号、提示用户更新以及下载和...
2. **在应用中集成版本检测**: 开发者通常会在应用启动时或特定操作后,通过网络请求检查服务器上的最新版本信息。这可以通过API接口实现,返回的数据应包含当前可用的版本代码和版本名称。 3. **网络请求与数据...
在iOS开发中,版本检查更新是一项重要的功能,它允许应用自动检测是否有新的版本可用,并提示用户进行升级。这项功能不仅可以确保用户始终使用最新、最安全的软件版本,还能提高产品的用户体验,因为开发者可以及时...
这种方式需要在应用内提供一个方便的入口点,如设置界面,以便用户随时检查更新。 总的来说,Swift中的App版本管理涉及网络请求、数据解析、本地存储和用户交互等多个方面。通过以上步骤,开发者可以有效地实现版本...
- 开发者可以根据业务需求设定更新策略,比如:仅在WiFi环境下检查更新,避免消耗用户流量。 - 可以设置定期检查,如每天或每周一次,或者在应用启动时检查。 7. **离线更新**: - 对于无法连接网络的用户,可以...
android是当今移动互联网最受欢迎的一门编程语言,互联网移动产品愈来愈多,版本更新成为一个必不可少的环节,本资源提供一个jar包来读取apk的配置文件来检测版本更新。
1. **版本检测**:在Android应用中,通常会在启动时或者在后台定期检查服务器上的最新版本信息。这可以通过发送HTTP请求到服务器上的API来完成,API返回当前应用商店中的最新版本号、更新日志和下载链接。在客户端,...
"易语言利用QQ空间检测版本更新"这个主题涉及到了几个关键知识点,包括易语言编程、网络通信、版本检测机制以及数据解析。 首先,易语言是一种基于中文的编程语言,它的设计目标是降低编程难度,使得更多的人可以...
- **更新策略**:决定何时检查更新,是否强制用户立即更新,以及如何处理更新失败的情况。 - **用户体验**:设计友好的更新提示和进度反馈,确保用户能清晰了解更新状态。 在压缩包文件"Equinox p2"中,可能包含...
3. 客户端检测:在客户端软件中,内置的更新检查机制会定期向更新服务器发送请求,获取当前安装版本与服务器上最新版本的信息。这个过程可能通过HTTP GET请求实现,请求参数包括当前版本号。 4. 比较与通知:客户端...
自动更新通常包含以下几个步骤:检查更新、下载更新、验证更新文件的完整性和安全性,以及在用户同意或在后台静默执行时安装更新。 在"资料整理"这个子文件中,可能包含了如何实现这些功能的文档、代码示例或者教程...
在移动应用开发中,"APP版本检测更新"是一项至关重要的功能,它确保用户始终能够使用最新、最安全的软件版本。这项功能通常包括以下几个关键部分: 1. **版本检测**:应用程序启动时或在特定时间间隔内,通过HTTP...
本文将深入探讨如何在Android中实现版本检测更新的机制。 首先,我们需要理解版本更新的基本流程:检查服务器上的最新版本信息,对比本地应用的版本号,如果存在新版本,提示用户进行更新。这一过程主要涉及网络...
- `Preference`或`SharedPreferences`存储用户的更新选择(如是否自动检查更新)。 6. **测试与调试**: - 模拟不同网络环境(如慢速网络、断网、网络波动)来测试更新逻辑的健壮性。 - 使用模拟器或真机进行多...
- **检测**:应用程序启动时或者在设定的时间间隔内,通过网络请求检查服务器上的版本信息,这通常涉及到对比当前版本号和服务器上提供的最新版本号。 - **下载**:如果发现新版本,应用会在后台下载更新包,通常...
在`MyVersionUpdate`这个文件夹中,可能包含了实现这些功能的Java类或者XML布局文件,比如一个`VersionCheckService`用于版本检测,一个`DownloadManager`负责下载更新,以及`UpdateDialog`用于展示更新信息和进度条...