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. OSX 10.14.2 安装Cocoapods 出现问题的解决方法

    今天尝试用 Cocoapods安装个第三方库.. 输入pod install, 发现 command not find. WTF! 估计是升级10.11后Cocoapods被干掉了. 我输入 sudo ...

  2. 引入flask_cache时出现ModuleNotFoundError: No module named 'flask.ext'

    环境: centos 7.3 python 3.6 flask 1.0.2 flask-cache 0.13.1 引入flask_cache后运行时,出现以下错误 Traceback (most re ...

  3. 本人亲测-SSM环境搭建(使用eclipse作为示例,过程挺全的,可作为参考)

    本人亲测-SSM环境搭建(使用eclipse作为示例,过程挺全的,可作为参考) 本人亲测-SSM环境搭建(使用eclipse作为示例,过程挺全的,可作为参考) 本人亲测-SSM环境搭建(使用eclip ...

  4. Int类的129为什么转成byte就变成-127了?

    作为一个java开发人员,接触的基本都是上层的,都是以应用为主,根据业务实现功能,但今天无意间发现了一个小问题,int类型的129转成byte类型变成了-127,我知道是因为位数截取的原因,但是还没有 ...

  5. 大型php网站性能和并发访问优化方案

    网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验度,网站访问速度慢会造成高跳出率,小网站很好解决,那对于大型网站由于栏目多,图片和图像都比较庞大,那该怎么进行整体性能优化呢? ...

  6. 利用window10的Linux子系统实现docker的安装使用

    先参照 此博客 点这里 我在执行 apt installdocker.io 命令时,不能正确的安装 docker client 所以我找了下面的命令,然后执行 docker version 成功了 辅 ...

  7. cinatra::http框架编译使用

    cinatra 一个高效易用的c++ http框架 1.下载源码 https://github.com/qicosmos/cinatra 2. vs2017 编译boost库 [msvc-14.1] ...

  8. 面试必问:ACID/CAP

    转载: https://www.jdon.com/artichect/acid-cap.html ACID和CAP的详尽比较 事务机制ACID和CAP理论是数据管理和分布式系统中两个重要的概念,很不巧 ...

  9. Linux及Windows安装Redis(详细)

    Linux及Windows安装Redis 1.Windows安装教程 1.1下载 https://github.com/MSOpenTech/redis/releases 进入github里下载red ...

  10. jenkins pipeline 流水线生产

    jenkins pipeline : pipeline { agent any parameters { string(name: 'git_version', defaultValue: 'v1.1 ...