H5+app,自動更新後自動刪除安裝包
H5+app 自動刪除安裝包
一、前言
之前做好的app自動更新,遺留下了一個問題,就是自動更新後安裝包沒有自行刪除掉。
好像現在的手機的系統是有安裝完自動清理安裝包的。想我這個H5+的app安裝完後是沒有自動刪除的,所以就需要用程式碼去刪除掉。
二、解決方式
使用html5+plus,提供的IO模組來操作自動更新後遺留下來的apk檔案。
參考文件:
http://www.html5plus.org/doc/zh_cn/io.html
IO模組:管理本地檔案系統,用於對檔案系統的目錄瀏覽、檔案的讀取、檔案的寫入等操作。通過plus.io可獲取檔案系統管理物件。
原理:1、通過plus.io.requestFileSystem請求本地檔案系統物件
第一個引數型別是 PUBLIC_DOWNLOADS: 程式公用下載目錄常量
成功返回後的引數fs,即:該下載目錄下的所有檔案,然後進行遍歷
2、通過plus.io.resolveLocalFileSystemURL操作檔案
第一個引數即檔案的路徑名,成功返回後的引數entry,即:檔案物件
得到檔案的物件就可以進行操作,檢視檔名,檔案大小,刪除,複製檔案等操作
三、程式碼
1、下面即為程式碼的實現
plus.io.requestFileSystem(plus.io.PUBLIC_DOWNLOADS, function(fs) { // fs.root是根目錄操作物件DirectoryEntry var directoryReader = fs.root.createReader(); directoryReader.readEntries(function(entries) { for (var i = 0; i < entries.length; i++) { var fileName = entries[i].name; var filePath = "_downloads/" + entries[i].name; plus.io.resolveLocalFileSystemURL(filePath, function(entry) { // 可通過entry物件操作test.html檔案 // entry.file(function(file) { // console.log(file.name); // }); entry.remove(); }, function(e) { // console.log("Resolve file URL failed: " + e.message); }); } }, function(e) { // alert("Read entries failed: " + e.message); }); });
2、其他做法
現在有個問題,就是安裝的後重啟是不可控,所以我最簡單的做法就是保留最新版本的apk,其他版本都刪除
當然可以有其他做法,就是檢測是否需要更新,如果不需要更新,則啟動刪除程式,將本地安裝清除。
function autoDeleteApk() { plus.runtime.getProperty(plus.runtime.appid, function(inf) { //獲取app的版本資訊 var ver = inf.version; //介面地址,用於獲取伺服器上最新的版本號,與本地進行對比。 var url = '{你介面的地址}'; mui.ajax(url, { data: { apkVersion: ver, }, dataType: 'json', type: 'GET', timeout: 60000, success: function(data) { var appVer = data.map.appVersion; if (appVer == null) { return; } plus.io.requestFileSystem(plus.io.PUBLIC_DOWNLOADS, function(fs) { // fs.root是根目錄操作物件DirectoryEntry var directoryReader = fs.root.createReader(); directoryReader.readEntries(function(entries) { for (var i = 0; i < entries.length; i++) { var fileName = entries[i].name; var appVerName = appVer + ".apk"; if (fileName != appVerName) { console.log("不刪除----------") return; } var filePath = "_downloads/" + entries[i].name; plus.io.resolveLocalFileSystemURL(filePath, function(entry) { // 可通過entry物件操作test.html檔案 // entry.file(function(file) { // console.log(file.name); // }); entry.remove(); }, function(e) { // console.log("Resolve file URL failed: " + e.message); }); } }, function(e) { // alert("Read entries failed: " + e.message); }); }); }, error: function(xhr, type, errerThrown) { //mui.toast('網路異常,請稍候再試'); } }); }); }
四、總結
之前遺留的問題總算是解決了,之前不知道怎麼,把自己繞進去了。
不清楚的地方可以看另外一篇:H5+app -- 自動更新
不足之處,請大家指教。
轉發請註明出處:https://www.cnblogs.com/lrj1009IRET/
&n