android 升级包检测并更新实现
实现步骤:
1.获取当前android程序的包名或版本代码
public class Version {
public int getCode() {
//android.content.ContextWrapper.getPackageManager()
PackageManager packageManager = app.getPackageManager();
int code = -1;
try {
code = packageManager.getPackageInfo(Package.name, 0).versionCode;
}
catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return code;
}
public String getName() {
PackageManager packageManager = app.getPackageManager();
String name = null;
try {
name = packageManager.getPackageInfo(Package.name, 0).versionName;
}
catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return name;
}
}
上面的版本代码是我们在AndroidManifest.xml配置的
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.mobile" android:versionCode="100000100"
android:versionName="1.0.1">
2.启动软件时从远程服务器端获取版本代码
versionName = app.server.getContent("/dist/version.txt").trim();
3.当前程序版本代码与远程获取的比对,不同则升级
if (currentVersionName.equals(versionName) || StrFuncs.isEmpty(versionName)) {
return false;
}
4.启动线程下载远程应用
a.获取android手机安装apk路径和相关权限
apkFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/temp/test_android.apk";
apkFile = new File(apkFilePath);
if (apkFile.exists()) {
apkFile.delete();
}
b.下载安装包apk
handler = new Handler();
new Thread() {
@Override
public void run() {
app.server.download("/dist/test_android.apk", apkFilePath);
handler.post(new Runnable() {
public void run() {
progressDlg.cancel();
}
});
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
fromActivity.startActivity(intent);
fromActivity.finish();
}
}.start();
在AndroidManifest.xml配置的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
分享到:
相关推荐
在Android开发中,实现一个复杂的红包雨效果是一个挑战性的任务,尤其当涉及到用户交互和事件处理时。这个项目,"Android复杂红包雨实现带点击事件处理",旨在提供一种实现方式,让红包从屏幕顶部随机落下,并且允许...
本篇文章将深入探讨如何在Android应用程序中实现自动更新功能以及静默升级。 一、实现自动更新检测 1. 检查更新接口设计:首先,需要设计一个服务或者后台任务,用于在合适的时间(如应用启动时、空闲时段)向...
在Android应用开发中,实现客户端自动检测更新的功能是一项常见的需求,可以提高用户体验并确保用户始终运行的是最新版本的软件。以下是对标题、描述和标签所涉及知识点的详细说明: 1. **Android 客户端自动检测...
在Android应用程序开发中,实现“自动检测更新”的功能是一项重要的技术实践,它能确保用户始终使用的是最新版本的软件,从而提高用户体验并保障应用的安全性。以下是对这一主题的详细阐述: 首先,我们要理解自动...
接下来,当检测到有新版本时,我们需要下载更新包。可以使用`java.net.URL`和`java.io.InputStream`类来实现文件下载,同时通过`ProgressBar`或者自定义进度条组件展示下载进度。在下载过程中,为了用户体验,可以...
本篇文章将深入探讨"Android范围碰撞检测",包括矩形碰撞检测和圆形碰撞检测,并以在Android 2.2系统上实现为例进行说明。 首先,我们要理解什么是碰撞检测。碰撞检测是指在二维或三维空间中,检测两个或多个物体...
本项目关注的是如何实现这样一个功能,即“android自动检测版本并更新下载,带进度条服务端解析xml”。这个功能涉及到客户端和服务端的交互,XML数据解析,以及UI更新等技术点。 首先,我们需要在服务端设置一个XML...
在Android应用开发中,版本自动...总之,Android应用的版本自动检测和更新涉及到多个开发环节,包括网络通信、数据解析、权限管理、用户体验设计等,每个环节都需要精心考虑和实现,以提供顺畅且用户友好的更新体验。
综上所述,这个demo提供了在Android 10环境下实现应用内版本升级的完整流程,开发者可以基于此实现自己的版本更新功能。理解并掌握这些知识点,对于Android开发者来说至关重要,它能帮助我们构建更加安全、便捷的...
这个名为"Android项目版本检测自动更新.rar"的压缩包文件很可能包含一个完整的Android项目示例,用于实现这样的功能。让我们详细探讨一下这个话题。 1. **版本检测**:在Android应用中,通常会在启动时或者在后台...
- 这个文件可能是博客中提到的一个示例更新包或者一个用于演示升级过程的APK文件。在实际开发中,通常会包含一个更新脚本(update-script)和其他必要的文件。 6. **用户界面**: - 提供友好的用户界面,告知用户...
在本文中,我们将深入探讨如何使用Delphi XE在Android平台上实现APP的自动在线更新与升级功能。Delphi XE是一款强大的集成开发环境(IDE),它支持跨平台应用程序开发,包括针对Android系统的应用。实现自动在线更新...
综上所述,实现"获得Android系统中所有已安装的应用并联网检测自动升级更新"的功能,需要掌握Android系统的API、网络编程、多线程处理、JSON解析、权限管理以及安全措施等多个方面的知识。通过合理的设计和实现,...
4. 更新频率:避免过于频繁的更新,以免打扰用户,同时考虑更新包大小,尽量减少用户流量消耗。 综上所述,Android软件自动更新涉及多个层面,从服务端的版本管理到客户端的更新逻辑,再到用户体验的优化,都需要...
首先,实现在线更新的核心在于检测新版本、下载更新包以及静默安装。以下是一般流程: 1. **版本检测**:应用启动时,通过网络请求服务器接口,获取当前最新的版本信息,包括版本号、更新日志和下载地址。服务器端...
这个名为"Android利用摄像头检测心率CameraXinlv"的项目,是将Eclipse工程迁移至Android Studio的一个实例,提供了如何实现心率检测的参考。 首先,我们要了解Android Studio。它是Google为Android开发推出的一款...
本文主要探讨了基于深度学习技术的Android恶意软件检测系统的设计和实现。在此背景下,文章深入分析了深度学习与传统机器学习在恶意软件检测领域的差异和优势,探讨了设计高效、准确的恶意软件检测系统的方法,并...
3. 后台静默升级:开发者可以通过在应用内部集成更新检查服务,定期检测是否有新版本,并在用户同意后自动下载和安装。 4. APK分发服务:使用如Google Play、华为应用市场等第三方分发平台,可以方便地管理应用的...
在Android应用开发中,自动检测...通过以上步骤,Android应用能够实现自动检测服务器上的版本更新,下载并提示用户安装新版本,从而保持应用的最新状态。这不仅提高了用户体验,也有助于开发者及时推送修复和新特性。