日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

android 自动更新 服务端,搭建android版本更新服务器使用android系统自带的DownloadManager下载文件...

發布時間:2024/9/15 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 自动更新 服务端,搭建android版本更新服务器使用android系统自带的DownloadManager下载文件... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這幾天想自己做一個文件更新的功能,但是由于不知道怎樣寫服務端,所以一直沒有去做,后來發現原來服務端編寫簡直是太簡單了,所以今天就實現了

版本更新的這樣一個功能。

一搭建版本更新服務器:

搭建這個一個服務器其實很簡單,或者說根本就談不上什么搭建。就是將你要更新的文件以及這個更新文件的配置文件放在Tomcat目錄下(也可以是其他

的服務器,如:nigix),保存這個配置文件的路徑,將你所要更新文件的信息,如:版本,文件路徑,文件名等等保存在配置文件中,然后在客戶端根據你

所保存的配置文件的路徑,讀取配置文件的信息,根據配置文件中的信息去決定是否要更新。具體步驟如下:

1、搭建Tomcat服務器,配置好能夠正常運行(這里不詳細寫了,網上教程太多了)

2、編寫配置xml文件,我的文件信息如下:

ITalkie_picc.apk 23 http://192.168.1.101:8080/app/ITalkie_picc.apk

這個文件中的內容可以根據自己的需要去編寫,前面的標識符如:name,url,等可以自定義。

3、在tomcat-6.0.37\webapps路徑下新建一個文件夾app,將你的配置文件以及要下載更新的文件(我這里要更新的文件為ITalkie_picc.apk)放入這個新

建的文件中。

4、啟動Tomcat,在瀏覽器輸入:http://192.168.1.101:8080/app/update.xml?看是否能夠正常加載xml中的信息,在瀏覽其中輸入:

http://192.168.1.101:8080/app/ITalkie_picc.apk,看是否能夠正常下載你所要更新的文件。如果一切正常,那么你所想的服務端便編寫好了,真的很簡單

這里記住,在瀏覽器中輸入的地址不必帶有Tomcat的文件路徑如:你在webapps文件下創建app文件,在瀏覽器輸入地址時不必帶有webapps名字,只

需要輸入你的文件在app下的路徑即可。

二客戶端更新功能:

主要有以下幾個步驟:

1、在更新前要檢查網絡情況

2、根據保存的xml路徑,解析xml文件,獲取xml中的信息,根據這個信息來決定是否下載更新

3、如果決定下載更新,那么啟動系統的download服務,設置好相關信息

4、下載完成后,啟動系統的安裝界面讓用戶選擇安裝。

下面放上主要代碼:

一設置系統DownloadManager的相關信息:

public class SystemDownLoad { Context context; String url,path,name; public SystemDownLoad(Context context,String url,String name,String path){ this.context = context; this.url = url; this.name = name; this.path = path; } public void downLoad(){ if(url!=null && name!=null && path!=null){ DownloadManager download = (DownloadManager)context.getSystemService(Context.DOWNLOAD_SERVICE); Uri uri = Uri.parse(url); Request request = new Request(uri); request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE|DownloadManager.Request.NETWORK_WIFI); request.setVisibleInDownloadsUi(true);//設置是否顯示下載的notification request.setTitle(name); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setDestinationInExternalPublicDir(path, 'ITalkie_picc.apk'); //設置下載文件的存放外部路徑以及文件名,如果下載的是音樂等文件,這樣設置能夠讓其他音樂掃描到。 long id = download.enqueue(request);//將請求放入下載請求隊列,并返回標志id SharedPreferences spf = context.getSharedPreferences('download', Activity.MODE_PRIVATE); SharedPreferences.Editor editor = spf.edit(); editor.putLong('download_id', id);//保存下載ID editor.commit(); } }}

二編寫下載完成后的BroadCastReceive,自動彈出安裝界面:

public class DownLoadReceive extends BroadcastReceiver{ DownloadManager downloadManager; @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)){ Log.i('DownLoadReceive', '收到數據'); long id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0); downloadManager = (DownloadManager)context.getSystemService(Context.DOWNLOAD_SERVICE); SharedPreferences spf = context.getSharedPreferences('download', Activity.MODE_PRIVATE); long download_id = spf.getLong('download_id',0); Query query = new Query(); query.setFilterById(id); Cursor cursor = downloadManager.query(query); String path =null; if(cursor.moveToFirst()){ int columnIndex = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS); if (DownloadManager.STATUS_SUCCESSFUL == cursor.getInt(columnIndex)) { String uriString = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)); //上面獲取的uriString 是所下載的apk uri路徑,而不是這個apk的路徑,所以要將uri轉化成文件的路徑 Uri uri = Uri.parse(uriString); path = uri.getPath(); } cursor.close(); } if(id == download_id && path !=null){ installApk(path,context); } } } private void installApk(String path,Context context){ File file = new File(path); if(!file.exists()){ Log.i('DownLoadReceive', '文件不存在'); return ; } // 通過Intent安裝apk文件,自動打開安裝界面 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), 'application/vnd.android.package-archive'); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //由于是在BroadcastReceive中啟動activity,所以啟動方式必須設置為FLAG_ACTIVITY_NEW_TASK context.startActivity(intent); }}

這樣下載更新的功能便做完了,完整的代碼我會上傳到github上,需要的可以去pull下來。https://github.com/lonuery/DownloadUpdate.git

總結

以上是生活随笔為你收集整理的android 自动更新 服务端,搭建android版本更新服务器使用android系统自带的DownloadManager下载文件...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。