导航:首页 > 操作系统 > android检测版本升级

android检测版本升级

发布时间:2022-05-12 11:58:46

❶ 如何对android的版本进行检测与更新

一、准备

1.检测当前版本的信息AndroidManifest.xml-->manifest-->android:versionName。

2.从服务器获取版本号(版本号存在于xml文件中)并与当前检测到的版本进行匹配,如果不匹配,提示用户进行升级,如果匹配则进入程序主界面。

3.当提示用户进行版本升级时,如果用户点击了确定,系统将自动从服务器上下载并进行自动升级,如果点击取消将进入程序主界面。

二、效果图


三、必要说明

服务器端存储apk文件,同时有version.xml文件便于比对更新。

<?xml version="1.0" encoding="utf-8"?>
<info>
<version>2.0</version>
<url>http://192.168.1.187:8080/mobilesafe.apk</url>
<description>检测到最新版本,请及时更新!</description>
<url_server>http://192.168.1.99/version.xml</url_server>
</info>
通过一个实体类获取上述信息。

package com.android;
public class UpdataInfo {
private String version;
private String url;
private String description;
private String url_server;

public String getUrl_server() {
return url_server;
}
public void setUrl_server(String url_server) {
this.url_server = url_server;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
apk和版本信息地址都放在服务器端的version.xml里比较方便,当然如果服务器端不变动,apk地址可以放在strings.xml里,不过版本号信息是新的,必须放在服务器端,xml地址放在strings.xml。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, VersionActivity!</string>
<string name="app_name">Version</string>
<string name="url_server">http://192.168.1.99/version.xml</string>
</resources>
不知道读者发现没有,笔者犯了个错误,那就是url_server地址必须放在本地,否则怎么读取version.xml,所以url_server不必在实体类和version里添加,毕竟是现需要version地址也就是url_server,才能够读取version。

三、代码实现

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btn_getVersion"
android:text="检查更新"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
package com.android;
import java.io.InputStream;
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
public class UpdataInfoParser {
public static UpdataInfo getUpdataInfo(InputStream is) throws Exception{
XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, "utf-8");
int type = parser.getEventType();
UpdataInfo info = new UpdataInfo();
while(type != XmlPullParser.END_DOCUMENT ){
switch (type) {
case XmlPullParser.START_TAG:
if("version".equals(parser.getName())){
info.setVersion(parser.nextText());
}else if ("url".equals(parser.getName())){
info.setUrl(parser.nextText());
}else if ("description".equals(parser.getName())){
info.setDescription(parser.nextText());
}
break;
}
type = parser.next();
}
return info;
}
}
package com.android;
import java.io.File;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class VersionActivity extends Activity {
private final String TAG = this.getClass().getName();
private final int UPDATA_NONEED = 0;
private final int UPDATA_CLIENT = 1;
private final int GET_UNDATAINFO_ERROR = 2;
private final int SDCARD_NOMOUNTED = 3;
private final int DOWN_ERROR = 4;
private Button getVersion;
private UpdataInfo info;
private String localVersion;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getVersion = (Button) findViewById(R.id.btn_getVersion);
getVersion.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
localVersion = getVersionName();
CheckVersionTask cv = new CheckVersionTask();
new Thread(cv).start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
private String getVersionName() throws Exception {
//getPackageName()是你当前类的包名,0代表是获取版本信息
PackageManager packageManager = getPackageManager();
PackageInfo packInfo = packageManager.getPackageInfo(getPackageName(),
0);
return packInfo.versionName;
}
public class CheckVersionTask implements Runnable {
InputStream is;
public void run() {
try {
String path = getResources().getString(R.string.url_server);
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
int responseCode = conn.getResponseCode();
if (responseCode == 200) {
// 从服务器获得一个输入流
is = conn.getInputStream();
}
info = UpdataInfoParser.getUpdataInfo(is);
if (info.getVersion().equals(localVersion)) {
Log.i(TAG, "版本号相同");
Message msg = new Message();
msg.what = UPDATA_NONEED;
handler.sendMessage(msg);
// LoginMain();
} else {
Log.i(TAG, "版本号不相同 ");
Message msg = new Message();
msg.what = UPDATA_CLIENT;
handler.sendMessage(msg);
}
} catch (Exception e) {
Message msg = new Message();
msg.what = GET_UNDATAINFO_ERROR;
handler.sendMessage(msg);
e.printStackTrace();
}
}
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case UPDATA_NONEED:
Toast.makeText(getApplicationContext(), "不需要更新",
Toast.LENGTH_SHORT).show();
case UPDATA_CLIENT:
//对话框通知用户升级程序
showUpdataDialog();
break;
case GET_UNDATAINFO_ERROR:
//服务器超时
Toast.makeText(getApplicationContext(), "获取服务器更新信息失败", 1).show();
break;
case DOWN_ERROR:
//下载apk失败
Toast.makeText(getApplicationContext(), "下载新版本失败", 1).show();
break;
}
}
};
/*
*
* 弹出对话框通知用户更新程序
*
* 弹出对话框的步骤:
* 1.创建alertDialog的builder.
* 2.要给builder设置属性, 对话框的内容,样式,按钮
* 3.通过builder 创建一个对话框
* 4.对话框show()出来
*/
protected void showUpdataDialog() {
AlertDialog.Builder builer = new Builder(this);
builer.setTitle("版本升级");
builer.setMessage(info.getDescription());
//当点确定按钮时从服务器上下载 新的apk 然后安装 װ
builer.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.i(TAG, "下载apk,更新");
downLoadApk();
}
});
builer.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//do sth
}
});
AlertDialog dialog = builer.create();
dialog.show();
}
/*
* 从服务器中下载APK
*/
protected void downLoadApk() {
final ProgressDialog pd; //进度条对话框
pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage("正在下载更新");
pd.show();
new Thread(){
@Override
public void run() {
try {
File file = DownLoadManager.getFileFromServer(info.getUrl(), pd);
sleep(3000);
installApk(file);
pd.dismiss(); //结束掉进度条对话框
} catch (Exception e) {
Message msg = new Message();
msg.what = DOWN_ERROR;
handler.sendMessage(msg);
e.printStackTrace();
}
}}.start();
}

//安装apk
protected void installApk(File file) {
Intent intent = new Intent();
//执行动作
intent.setAction(Intent.ACTION_VIEW);
//执行的数据类型
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);
}
}
package com.android;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.ProgressDialog;
import android.os.Environment;
public class DownLoadManager {
public static File getFileFromServer(String path, ProgressDialog pd) throws Exception{
//如果相等的话表示当前的sdcard挂载在手机上并且是可用的
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
//获取到文件的大小
pd.setMax(conn.getContentLength());
InputStream is = conn.getInputStream();
File file = new File(Environment.getExternalStorageDirectory(), "updata.apk");
FileOutputStream fos = new FileOutputStream(file);
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buffer = new byte[1024];
int len ;
int total=0;
while((len =bis.read(buffer))!=-1){
fos.write(buffer, 0, len);
total+= len;
//获取当前下载量
pd.setProgress(total);
}
fos.close();
bis.close();
is.close();
return file;
}
else{
return null;
}
}
}
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

❷ Android每天检测一次是否有更新

1.检测当前版本的信息AndroidManifest.xml-->manifest-->android:versionName。

2.从服务器获取版本号(版本号存在于xml文件中)并与当前检测到的版本进行匹配,如果不匹配,提示用户进行升级,如果匹配则进入程序主界面。

3.当提示用户进行版本升级时,如果用户点击了确定,系统将自动从服务器上下载并进行自动升级,如果点击取消将进入程序主界面。

安卓系统怎么升级8.0以上

目前安卓端8.0版本的系统已经推送至用户手机中,有需要的用户可以直接通过系统升级通道升级8.0,不过很多手机对8.0系统都会出现卡顿现象,请确认自己的手机足够使用安卓8.0系统。安卓8.0升级可以能通过常规操作实现。

1、打开手机“设置”。

虽然大部分手机可以安装安卓8.0,但是要以手机厂商适配为准,部分手机还是不能安装的,具体能否安装可以上网咨询或在手机营业厅咨询,也可密切关注官网公布的信息。安装系统前要先确保自己手机有足够的内层空间,建议在备份数据之后,清理一下内存卡和缓存,避免不必要的麻烦。

❹ 华为手机安卓系统如何升级

材料/工具:华为P10

1、打开手机进入主屏幕,点击设置按钮;

❺ Android 检查版本升级应该怎么做

我们平时升级手机系统都通过刷机软件来升级。这样弄不好就会把你的手机变成板砖的。其实我们可以随时通过更新手机版本来完成手机系统的升级,即安全又方便。 一、手机升级 1、在更新升级之前首先要将手机里面的重要数据进行备份,以免丢失。备份数据可以通过手机同步助手或者是91手机助手等同步工具来进行备份,如图: 2、备份完成以后,点击手机里的设置,进入到手机设置窗口,如图: 3、进入到手机设置窗口之后,在窗口上面点击通用,如图: 4、点击通用之后,进入到通用窗口,在窗口上面点击系统升级,如图: 5、点击系统升级之后进入到系统升级窗口,在窗口上面点击立即检查更新,如果你的手机系统是最新状态就不用升级了,如图有更新的版本就需要更新的版本下载到手机上面,如图: 6、我们可以通过把系统升级设置为自动检查,这样可以再有系统的更新版本的时候自动提醒更新升级。手机系统更新版版本下载之后安装到手机上面,需要重新启动手机才可以完成的。 二、官网升级 1、每个手机的官网都有提供手机系统固件升级的升级包,我们只需要进入到手机官网的下载页面,我是用的是vivo手机,如图: 2、进入到下载页面,找到自己手机型号相匹配 的固件升级包,然后下载到电脑上,再通过电脑传到手机上面进行安装就可以了。 注意: 1、不管是手机升级还是官网升级都要保证手机的电量充足,避免在升级的过程中缺电关机,造成升级失败 2、不同品牌型号的手机,系统升级更新在“设置”里的位置可能不太一样

❻ 安卓手机系统怎样升级到最新版本

若使用的是vivo手机,可在手机的设置--系统升级页面检测更新,手机搜索到更新消息会在该页面有提示。

❼ android版本更新如何判断

假设你是做android开发的。
你应该明白AndroidManifest.xml这个文件里的versionCode和versionName;
你也应该知道SQLiteOpenHelper里的onUpgrade()是干什么用的;
你还应该知道程序升级是必须具有相同的签名和包名才行的。

❽ 安卓手机版本太低怎么升级

安卓手机系统升级方法:
一、OTA升级:保证手机联网,进入手机的设置-关于本机-系统更新,点击后下载升级包完成升级操作,也可以通过手机菜单找到系统更新图标点击直接升级;
二、本地升级:电脑下载好升级包,拷至手机存储或者存储卡,通过系统更新或者资源管理器打开本地升级包直接升级;
三、PC套件升级:电脑安装手机品牌官方的PC套件或者是刷机工具,数据线连接手机,选择下载好的升级包或者直接在线下载升级包通过电脑完成升级。

❾ Android系统可以升级吗怎么升级

安卓系统可以升级,升级过程如下:

下面以升级Android2.3.4为例子,注意:Android2.3.4只支持从Android2.3.3升级,如果系统是Android2.3.1的话,必须要先升级到Android2.3.3才可以再升级为2.3.4。

另外,这个升级是增量升级,并不会删除原先系统中的数据,所以大家可以放心升级。

第一步:先要手机下载Android2.3.4的升级数据包,我用的电脑给你搜了一下。

甜点命名法开始于Android 1.5发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照26个字母数序:纸杯蛋糕(Android 1.5),甜甜圈(Android 1.6),松饼(Android 2.0/2.1),冻酸奶(Android 2.2),姜饼(Android 2.3),蜂巢(Android 3.0)。

冰激凌三明治(Android 4.0),果冻豆(Jelly Bean,Android4.1和Android 4.2),奇巧(KitKat,Android 4.4),棒棒糖(Lollipop,Android 5.0),棉花糖(Marshmallow,Android 6.0),牛轧糖(Nougat,Android 7.0),奥利奥(Oreo,Android 8.0)。

❿ Android检查版本升级应该怎么做

军粮行统扶摇直上伪亮

阅读全文

与android检测版本升级相关的资料

热点内容
云服务器打开f8指令 浏览:241
盈透证券加密币 浏览:72
阿里云服务器初始密码怎么修改 浏览:266
服务器怎么设定公用网络 浏览:99
程序员自己尝尿检测出糖尿病 浏览:592
打印添加pdf 浏览:932
苹果解压专家账号 浏览:842
度晓晓app为什么关闲 浏览:228
net文件是伪编译码吗 浏览:149
伴随矩阵的matlab编程 浏览:63
单片机和h桥是什么意思 浏览:314
51单片机光控设计论文 浏览:653
涡旋式压缩机无油 浏览:729
企业网搭建及应用pdf 浏览:744
symanteclinux 浏览:878
程序员朋友化妆改造 浏览:493
应用被加密但不知道密码 浏览:586
百度云黑马android 浏览:773
java格式化long 浏览:893
汽车如何加密文档 浏览:625