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/

H5+app,自动更新后自动删除安装包的更多相关文章

  1. svn版本库更新后自动同步到www

    注意:www目录一定要用SVN服务器 checkout出Repositories的代码 步骤: (1)新建www根目录 mkdir -p /data/www/lehuo (2)在www根目录下检出(c ...

  2. 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项

    原文:性能优化--统计信息--SQLServer自动更新和自动创建统计信息选项 原文译自:http://www.mssqltips.com/sqlservertip/2766/sql-server-a ...

  3. Android APK安装完成自动删除安装包

    需要实现此功能,一般实际开发是在自动版本更新上,当更新完开始自动安装完毕后,删除内存卡里的安装包.实现方式很简单,监听应用广播,获取内存卡下的文件,删除! 1.监听广播 package com.exa ...

  4. 关于iphone6安装了727个应用后,更新app 导致一些app无法更新,无法删除,重启后消失,但是却还是占用空间的解决办法

    我的iphone6 苹果手机,64GB的,存储空间最近一直很吃紧,很捉急,昨天,终于下定决心 解决下这个问题. 由于 空间大,我又随便安装许多APP,现在有727个app,常用的其实就是那个几十个而已 ...

  5. 获取OS X中App Store更新后的安装包(如XCode)

    如果宿舍有好几个人需要更新一些大的软件,如XCode,会占用很大的带宽.   为了节省带宽,我们可以在1台电脑上更新完后,获取存放在系统暂存区的更新的安装包,然后通过局域网或Airdrop的方式轻松分 ...

  6. 转载:性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项

    这段时间AX查询变得非常慢,每天都有很多锁. 最后发现是数据库统计信息需要更新. ----------------------------------------------------------- ...

  7. 华为手机,删除安装包apk

    1.下载“文件管理”,完成安装后,打开文件管理. 2.找到安装包,单击. 3.长按想要删除的apk文件,页面上会出现垃圾箱的图标,点击垃圾箱即可完成删除.

  8. docker-compose在dockerfile更新后自动更新image

    比如在dockerfile里需要新安装包 形如 加一行 RUN pip3 install XXX 之后,希望docker-compose能更新镜像, 然后启动容器 只需要启动时使用 --build即可 ...

  9. win10自动更新后SQLServer无法启动的问题排查

    今天中午windows提示更新系统补丁并重启后发现,本地的SQL Server服务器没有正常启动,手工启动sqlserver也失败了,报错:找不到ERRORLOG文件及相应目录. 很是奇怪.强制创建该 ...

随机推荐

  1. uniapp 与C# 加解密

    1 uni-app操作 (1) 打开HBuilderX的视图->显示终端 cd 切换到你项目的根目录 执行命令 npm install crypto-js 安装成功后你的项目根目录会生成node ...

  2. 彩虹战队waf测试工具(测试数据)

    安全狗 D盾 云锁 360主机卫士 奇安信 绿盟 腾讯云 百度云 阿里云 小米斗鱼 启明星辰/天融信 深信服 华为 知道创宇 长亭 360天眼

  3. jquery 往上滚动的时显示,上下滚动执行的js

    $(document).on("mousewheel DOMMouseScroll", function (e) { var delta = (e.originalEvent.wh ...

  4. 百万年薪python之路 -- MySQL数据库之 常用数据类型

    MySQL常用数据类型 一. 常用数据类型概览 # 1. 数字: 整型: tinyint int bigint 小数: float: 在位数比较短的情况下不精确 double: 在位数比较长的情况下不 ...

  5. 如何在 GitHub 的项目中创建一个分支呢?

    如何在 GitHub 的项目中创建一个分支呢? 其实很简单啦,直接点击 Branch,然后在弹出的文本框中添加自己的 Branch Name 然后点击蓝色的Create branch就可以了,这样一来 ...

  6. [Tarjan系列] Tarjan算法与有向图的SCC

    前面的文章介绍了如何用Tarjan算法计算无向图中的e-DCC和v-DCC以及如何缩点. 本篇文章资料参考:李煜东<算法竞赛进阶指南> 这一篇我们讲如何用Tarjan算法求有向图的SCC( ...

  7. SoapUI 关联之Property Transfer、JSONPath、Xpath

    进行接口功能测试过程中,经常会碰到,需要获取到上一个请求响应结果中数据,传递到下一个请求中来使用.在soapui中我们通过Property Transfer来实现. 1.Property Transf ...

  8. MySQL基础篇(1)SQL基础

    SQL是Structure Query Language(结构化查询语言)的缩写,它是使用关系模型的数据库应用语言. 一.SQL分类(DDL,DML,DCL) DDL(Data Definition ...

  9. Java8系列 (四) 静态方法和默认方法

    静态方法和默认方法 我们可以在 Comparator 接口的源码中, 看到大量类似下面这样的方法声明 //default关键字修饰的默认方法 default Comparator<T> t ...

  10. ElasticSearch 中文分词插件ik 的使用

    下载 IK 的版本要与 Elasticsearch 的版本一致,因此下载 7.1.0 版本. 安装 1.中文分词插件下载地址:https://github.com/medcl/elasticsearc ...