Android应用的更新检测与安装大致步骤就是,从服务器获取应用的版本信息->与当前手机应用版本信息比较->下载最新版本应用->安装
1.从服务器获取应用的版本信息并检测是否更
/*
* 检测是否有新版本,有点话升级
*/
private void checkUpdate() {
new Thread(){
public void run() {
Message msg=Message.obtain();
try {
URL url=new URL(getString(R.string.serverurl));
//联网
try {
HttpsURLConnection conn=(HttpsURLConnection) url.openConnection();
//设置请求方法
conn.setRequestMethod("GET");
//设置联网超时时间为4秒
conn.setConnectTimeout(4000);
int code=conn.getResponseCode();
if(code==200){
//联网成功
InputStream is=conn.getInputStream();
//将流转换成数据串
String result=StreamTools.readFromStream(is);
try {
JSONObject obj=new JSONObject(result);
//获取服务器版本信息
String version=obj.getString("version");
String apkurl=obj.getString("apkurl");
String discription=obj.getString("discription");
//校验是否有新版本
if(getVersionName().equals(version)){
//版本一致,没有新版本,进入主页面
mse.what=ENTER_HOME;
}else{
//有新版本,弹出升级对话框
msg.what=SHOW_UPDATE_DIALOG;
}
} catch (JSONException e) {
msg.what=JSON_ERROR;
e.printStackTrace();
}
}
} catch (IOException e) {
msg.what=NETWORK_ERROR;
e.printStackTrace();
}
} catch (MalformedURLException e) {
msg.what=URL_ERROR;
e.printStackTrace();
}finally{
handler.sendMessage(msg);
}
};
}.start();
}
/**
* 获取版本信息
*/
private String getVersionName() {
// 用于管理手机的APK
PackageManager pm = getPackageManager();
try {
//获取功能清单文件
PackageInfo info=pm.getPackageInfo(getPackageName(), 0);
return info.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
return "";
}
}
2.对相应事件进行响应
private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case SHOW_UPDATE_DIALOG: //显示升级对话框 showUpdateDialog(); break; case ENTER_HOME: //进入主界面 enterHome(); break; case JSON_ERROR: //JSON解析出错 Toast.makeText(getApplicationContext(), "JSON出错", 0).show(); break; case NETWORK_ERROR: //网络异常 Toast.makeText(getApplicationContext(), "网络异常", 0).show(); break; case URL_ERROR: //URL出错 Toast.makeText(getApplicationContext(), "URL出错", 0).show(); break; default: break; } } };
3.新版本的下载与安装
/* * 弹出升级对话框 */ protected void showUpdateDialog() { AlertDialog.Builder builder=new Builder(this); // builder.setCancelable(false); //强制升级 builder.setOnCancelListener(new OnCancelListener() { public void onCancel(DialogInterface dialog) { //进入主页 enterHome(); dialog.dismiss(); } }); builder.setTitle("提示升级"); builder.setMessage(discription); builder.setPositiveButton("立即升级", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { // 下载apk,并安装替换 if(Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED)){ //sdcard存在 //final,第三方架包 FinalHttp finalhttp=new FinalHttp(); finalhttp.download(apkurl, Environment.getExternalStorageDirectory().getAbsolutePath()+"/mobilesafe2.0", new AjaxCallBack<File>() { @Override public void onFailure(Throwable t, int errorNo, String strMsg) { // 下载失败 t.printStackTrace(); Toast.makeText(getApplicationContext(), "下载失败", 1).show(); super.onFailure(t, errorNo, strMsg); } @Override public void onLoading(long count, long current) { tv_update_info.setVisibility(View.VISIBLE); //显示进度文本 //当前下载百分比 int progress=(int) (current*100/count); tv_update_info.setText("下载进度"+progress+"%"); super.onLoading(count, current); } @Override public void onSuccess(File t) { super.onSuccess(t); installAPK(t); } //安装下载好的Apk private void installAPK(File t) { Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.setDataAndType(Uri.fromFile(t), "application/vnd.android.package-archive"); startActivity(intent); } }); }else { Toast.makeText(getApplicationContext(), "sdcard不存在,请安装再试",0).show(); return; } } }); builder.setNegativeButton("下次再说", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); enterHome(); //进入主页 } }); builder.show(); }
服务器路径
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="serverurl">http://192.168.1.112:8080/updateinfo.html</string> </resources>
相关推荐
android 应用更新功能 检测更新 自动下载安装 demo updatedemo
获得Android系统中所有已安装的应用,通过http联网自动检测更新新版本,并下载升级更新。
android 检查应用更新。当有新版本的时候,提示更新。
恶意软件的检测又可分为恶意行为的检测和恶意代码的检测,提出按SVM算法应用到的检测领域分类,分别对其应用于Android应用程序中的恶意行为检测、恶意代码检测和漏洞检测等方面的研究进行分析与讨论,总结了当前该...
Android App检查所有已安装应用申请权限的细节
Android 用Service+OKHttp实现应用后台检测更新示例代码; Android 用Service+OKHttp实现应用后台检测更新示例代码 Android 用Service+OKHttp实现应用后台检测更新示例代码 Android 用Service+OKHttp实现应用后台...
Android检测设备上是否安装了此应用,没安装进入下载也进行下载,安装了直接跳转到该应用中去。
上述的packagename是你要检测的应用的包名,怎么查看包名请自行百度哈! 判断好之后,我们可以定义,当有地图应用的时候,就跳转到地图应用,当无地图应用的时候,就跳转到网页: 跳转到高德地图: 参数: act=...
Android应用隐私条例与敏感行为一致性检测.pdf
发挥Android应用的多类行为特征在恶意代码检测上所起的不同作用.文中首次提出了一种综合考虑Android多 类行为特征的三层混合系综算法THEA(Triple Hybrid Ensemble Algorithm)用于检测Android未知恶意应用.首 先,...
第一部分(第1~4章)主要介绍Android SDK开发环境的安装、应用程序的结构、用户界面的组件及其设计方法,第二部分(第5~10章)主要介绍较高级的主题,内容包括异常处理与多线程、后台服务与系统服务技术、图形与...
Android 应用开发源码 参考与学习使用
android启动页引导页到主界面含有检查应用更新。.rar
Android应用源码10套安卓源码合集: android应用源码DroidBrowser浏览器.rar android应用源码QQ_UI之分类菜单.rar ...Android应用源码之极致拟物化空气质量检测仪.rar android应用源码今日星座运势.rar
一个简单小巧的Android检查更新库,通过爬网页的方式查询应用在市场上的最新版本信息
Android APP应用的自动升级更新,可以在本地或连接HTTP进行自动检测,提示是否升级,自动安装。
很多的Android应用都具有版本检测和自动更新的功能,用户一键就可以完成软件的升级和更新。Android应用程序的升级本质上是利用了Linux系统的软件包管理和安装机制,而对于上层这一功能的开发来说很容易,只需要我们...
经验丰富的作者Wei-Meng Lee首先介绍了如何安装必要的工具并编写HelloWorld应用。接下来介绍Android平板应用的各种组件。在构建一些有助于你开发自己的Android平板应用的示例平板项目后,你会迅速掌握Android 3。 ...
基于资源签名的Android应用相似性快速检测方法.pdf
基于JDWP的Android应用程序恶意行为检测研究.pdf