Android程序的版本检测与更新Word文档格式.docx

上传人:b****6 文档编号:21813842 上传时间:2023-02-01 格式:DOCX 页数:12 大小:25.53KB
下载 相关 举报
Android程序的版本检测与更新Word文档格式.docx_第1页
第1页 / 共12页
Android程序的版本检测与更新Word文档格式.docx_第2页
第2页 / 共12页
Android程序的版本检测与更新Word文档格式.docx_第3页
第3页 / 共12页
Android程序的版本检测与更新Word文档格式.docx_第4页
第4页 / 共12页
Android程序的版本检测与更新Word文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Android程序的版本检测与更新Word文档格式.docx

《Android程序的版本检测与更新Word文档格式.docx》由会员分享,可在线阅读,更多相关《Android程序的版本检测与更新Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

Android程序的版本检测与更新Word文档格式.docx

否则新的无法替换旧的,提示安装未完成。

-------------------天气太冷,咯咯咯------------------------------------

这个功能做在菜单上,触发代码如下:

//==========================================================================

//菜单

//==========================================================================

privatestaticfinalStringurlApk="

http:

//3g.***.com/tool/***.apk"

;

privatestaticfinalStringurlVer="

//3g.***.com/tool/ver_apk.xml"

@Override

publicbooleanonCreateOptionsMenu(Menumenu){

menu.add(Menu.NONE,Menu.FIRST+1,5,"

检测更新"

).setIcon(

android.R.drawable.ic_menu_upload);

menu.add(Menu.NONE,Menu.FIRST+2,4,"

退出"

).setIcon(android.R.drawable.ic_lock_power_off);

returntrue;

}

publicbooleanonOptionsItemSelected(MenuItemitem){

switch(item.getItemId()){

caseMenu.FIRST+1:

Toast.makeText(this,"

正在检测版本"

Toast.LENGTH_LONG).show();

UpdateVeruv=newUpdateVer(urlApk,urlVer,MainActivity.this);

uv.checkVer();

break;

caseMenu.FIRST+2:

confirmExit();

}

returnfalse;

检测更新因为代码比较多,写成一个类进行封装

UpdateVer.java

packageandroid.***;

importandroid.app.Activity;

importandroid.app.AlertDialog;

importandroid.app.Dialog;

importandroid.app.ProgressDialog;

importandroid.content.Context;

importandroid.content.DialogInterface;

importandroid.content.Intent;

import.Uri;

importandroid.os.AsyncTask;

importandroid.util.Log;

importandroid.webkit.URLUtil;

importandroid.widget.Toast;

importjava.io.File;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStream;

import.MalformedURLException;

import.URL;

import.URLConnection;

importjava.util.Properties;

importorg.xml.sax.InputSource;

importjava.text.SimpleDateFormat;

importjava.util.Date;

publicclassUpdateVerextendsActivity{

privatestaticfinalStringTAG="

DOWNLOADAPK"

privateStringPastVersion;

privateStringNowVersion;

publicProgressDialogpBar;

privateStringcurrentFilePath="

"

privateStringfileEx="

privateStringfileNa="

privateStringstrURL="

privateStringVersionUri="

privateContextmContext;

privatefinalStringfileVer="

ver.cfg"

publicUpdateVer(Stringurlapk,Stringurlver,finalContextcontext){

SimpleDateFormatdf=newSimpleDateFormat("

yyyyMMddHHmmss"

);

Stringver="

ver="

+df.format(newDate());

//主要是避开手机的缓存

strURL=urlapk+ver;

VersionUri=urlver+ver;

mContext=context;

publicvoidcheckVer(){

//解析Version网页,获取版本号

getVersionxml(VersionUri);

privatevoidcompareVer(){

load();

//当有最新版本的时候

if(PastVersion!

=null&

&

!

PastVersion.equals(NowVersion)){

Dialogdialog=newAlertDialog.Builder(mContext).setTitle("

系统更新"

.setMessage(String.format("

发现新版本%s,目前版本为%s,请更新!

NowVersion,PastVersion))//设置内容

//设置确定按钮

.setPositiveButton("

确定"

newDialogInterface.OnClickListener(){

@Override

publicvoidonClick(DialogInterfacedialog,

intwhich){

pBar=newProgressDialog(mContext);

pBar.setTitle("

正在下载"

pBar.setMessage("

请稍候..."

pBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);

fileEx=strURL.substring(strURL.lastIndexOf("

."

)+1,strURL.length()).toLowerCase();

fileEx=fileEx.substring(0,fileEx.lastIndexOf("

));

fileNa=strURL.substring(strURL.lastIndexOf("

/"

)+1,strURL.lastIndexOf("

getFile(strURL);

}).setNegativeButton("

取消"

newDialogInterface.OnClickListener(){

intwhichButton){

//点击"

按钮之后退出程序

}).create();

//创建

//显示对话框

dialog.show();

else{

Toast.makeText(mContext,String.format("

当前为最新版本%s"

PastVersion),Toast.LENGTH_LONG).show();

privatevoidgetFile(finalStringstrPath)

{

pBar.show();

try{

if(strPath.equals(currentFilePath)){

getDataSource(strPath);

currentFilePath=strPath;

Runnabler=newRunnable(){

publicvoidrun()

}

catch(Exceptione){

Log.e(TAG,e.getMessage(),e);

};

newThread(r).start();

catch(Exceptione){

e.printStackTrace();

/*取得远程文件*/

privatevoidgetDataSource(StringstrPath)throwsException{

if(!

URLUtil.isNetworkUrl(strPath)){

Log.d("

Tag"

"

error"

else{

/*取得URL*/

URLmyURL=newURL(strPath);

/*建立联机*/

URLConnectionconn=myURL.openConnection();

conn.connect();

/*InputStream下载文件*/

InputStreamis=conn.getInputStream();

if(is==null){

tag"

thrownewRuntimeException("

没有读取到文件内容"

/*建立临时文件*/

FilemyTempFile=File.createTempFile(fileNa,"

+fileEx);

myTempFile.getAbsolutePath();

/*将文件写入临时盘*/

FileOutputStreamfos=newFileOutputStream(myTempFile);

bytebuf[]=newbyte[128];

do{

intnumread=is.read(buf);

if(numread<

=0){

fos.write(buf,0,numread);

}while(true);

/*打开文件进行安装*/

openFile(myTempFile);

try{

is.close();

catch(Exceptionex){

Log.e(TAG,"

error:

"

+ex.getMessage(),ex);

/*在手机上打开文件*/

privatevoidopenFile(Filef){

pBar.cancel();

Intentintent=newIntent();

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

intent.setAction(android.content.Intent.ACTION_VIEW);

/*调用getMIMEType()来取得MimeType*/

Stringtype=getMIMEType(f);

/*设定intent的file与MimeType*/

intent.setDataAndType(Uri.fromFile(f),type);

mContext.startActivity(intent);

/*判断文件MimeType的method*/

privateStringgetMIMEType(Filef){

Stringtype="

StringfName=f.getName();

/*取得扩展名*/

Stringend=fName.substring(fName.lastIndexOf("

)+1,fName.length()).toLowerCase();

/*按扩展名的类型决定MimeType*/

if(end.equals("

m4a"

||end.equals("

mp3"

mid"

xmf"

ogg"

wav"

)){

type="

audio"

elseif(end.equals("

3gp"

)||end.equals("

mp4"

video"

jpg"

gif"

png"

jpeg"

bmp"

image"

apk"

)){

/*android.permission.INSTALL_PACKAGES*/

application/vnd.android.package-archive"

*"

/*如果无法直接打开,就跳出软件清单给使用者选择*/

if(!

end.equals("

type+="

/*"

returntype;

privatevoidgetVersionxml(StringresourceUrl){

GetVergv=newGetVer();

gv.execute(resourceUrl);

privatebooleanload(){

Propertiesproperties=newProperties();

try{

InputStreamstream=mContext.getAssets().open(fileVer);

//FileInputStreamstream=mContext.openFileInput(fileVer);

//读取文件内容

properties.load(stream);

catch(FileNotFoundExceptione){

catch(IOExceptione){

catch(Exceptione){

PastVersion=String.valueOf(properties.get("

Version"

).toString());

//==========================================================================

//GetVer

//==========================================================================

classGetVerextendsAsyncTask<

String,Integer,String>

{

@Override

protectedStringdoInBackground(String...urlVer){

Stringdb=null;

URLurl=null;

try{

url=newURL(urlVer[0]);

catch(MalformedURLExceptione){

InputSourceis=null;

is=newInputSource(url.openStream());

is.setEncoding("

UTF-8"

db=SAXGetVersionService.readRssXml(is);

catch(Exceptione){

returndb;

protectedvoidonCancelled(){

super.onCancelled();

protectedvoidonPostExecute(Stringresult){

NowVersion=result;

compareVer();

AndroidManifest.xml要加上几句

<

uses-permissionandroid:

name="

android.permission.INTERNET"

/>

android.permission.INSTALL_PACKAGES"

/>

android.permission.MOUNT_UNMOUNT_FILESYSTEMS"

android.permission.WRITE_EXTERNAL_STORAGE"

android.permission.RESTART_PACKAGES"

android.permission.READ_PHONE_STATE"

android.permission.ACCESS_NETWORK_STATE"

android.permission.ACCESS_COARSE_LOCATION"

android.permission.ACCESS_WIFI_STATE"

参考文章:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1