H5+app,自動更新后自動刪除安裝包,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('網絡異常,請稍候再試');
                        }
                    });
                });
            }

四、總結

  之前遺留的問題總算是解決了,之前不知道怎麼,把自己繞進去了。

  不清楚的地方可以看另外一篇:

  不足之處,請大家指教。

  轉發請註明出處:https://www.cnblogs.com/lrj1009IRET/

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益