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. 统计字符的个数,能够组成几个acmicpc

    Problem F. String Input file:                  standard input Output file:               standard ou ...

  2. MySQL复制从库建立-mysqldump方式

    环境准备: master:192.168.0.106:3306slave:192.168.0.105:3306 主和从都必须配置有唯一的ID(server_id:建议ip最后一组+MySQL端口号,例 ...

  3. centos7升级openssl、openssh常见问题及解决方法

    升级至openssl 1.1.1版本 升级至openssh 8.0版本 openssl version -a   当前查看版本 一.安装telnet (以防升级失败,连不上服务器,建议弄) #查看是否 ...

  4. drf框架serializers中ModelSerializer类简化序列化和反序列化操作

    0905自我总结 drf框架serializers中ModelSerializer类 基于seriallizer类进行简化 https://www.cnblogs.com/pythonywy/p/11 ...

  5. Flask中g对象,以及g,session,flash之间的区别

    一.g对象的使用 专门用来存储用户信息的g对象,g的全称的为global g对象在一次请求中的所有的代码的地方,都是可以使用的 g对象的使用: 设置:g.变量名= 变量值 获取:g.name 注意:g ...

  6. 宝塔面板6.x版本前台存储XSS+后台CSRF组合拳Getshell

    对于宝塔漏洞复现和练习 0×00  什么是宝塔面板 宝塔面板是一款使用方便,功能强大且终身免费的服务器管理软件,支持Linux 与Windows 系统.一键配置:LAMP / LNMP ,网站,数据库 ...

  7. Qt 找不到rc.exe

    Qt在window下出现编译错误: LINK : fatal error LNK1158: 无法运行“rc.exe” 解决: 找到rc.exe的放置路径,比如我的在下面: C:\Program Fil ...

  8. 研究了3天,终于将 Shader 移植到 Cocos Creator 2.2.0 上了!

    预览 扫光特效-Fluxay2 马赛克像素特效-Mosaic 过渡效果-Transfer Shawn 花了3天时间,研究了Cocos Creator 2.2.0 的 Effect 语法,终于在1024 ...

  9. 《HTML5+CSS3+JavaScript 从入门到精通(标准版)》学习笔记(二)

    这是一个应用的例子,学以致用嘛 <!--这些代码我就直接放在了博客园的"页首Html代码"中,用于自定义博客,效果就是页面左上角的白色文字--> <p> & ...

  10. springboot整合Shiro功能案例

    Shiro 核心功能案例讲解 基于SpringBoot 有源码 从实战中学习Shiro的用法.本章使用SpringBoot快速搭建项目.整合SiteMesh框架布局页面.整合Shiro框架实现用身份认 ...