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. 最强最全的Java后端知识体系

    目录 最全的Java后端知识体系 Java基础 算法和数据结构 Spring相关 数据库相关 方法论 工具清单 文档 @(最强最全的Java后端知识体系) 最全的Java后端知识体系 最全的Java后 ...

  2. Java编程思想——第17章 容器深入研究 读书笔记(三)

    七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: ad ...

  3. ThinkPHP5 远程命令执行漏洞分析

    本文首发自安全脉搏,转载请注明出处. 前言 ThinkPHP官方最近修复了一个严重的远程代码执行漏洞.这个主要漏洞原因是由于框架对控制器名没有进行足够的校验导致在没有开启强制路由的情况下可以构造恶意语 ...

  4. Prometheus 源码解读(一)

    Prometheus 源码解读(一) Prometheus 是云原生监控领域的事实标准,越来越来的开源项目开始支持 Prometheus 监控数据格式.从本篇开始,我将和大家一起阅读分析 Promet ...

  5. NOIP2018提高组初赛游记

    AH省的,好像水军多,走的都比较早(莫非是真·大佬!!) 本人考了71,较去年退步了.(去年还考80多的来着) 题目坑.. 第一.二大题选择 第三题年份,看了试卷标题,第二十二届,算出来后没有这个选项 ...

  6. SpringBoot学习(三)探究Springboot自动装配

    目录 什么是自动装配 何时自动装配 原理分析 注:以下展示的代码springboot的版本为2.0.3版.因源码过长,大家选择展开代码 ㄟ( ▔, ▔ )ㄏ 什么是自动装配 自动装配还是利用了Spri ...

  7. redis入门(二)

    目录 redis入门(二) 前言 持久化 RDB AOF 持久化文件加载 高可用 哨兵 流程 安装部署 配置技巧 集群 原理 集群搭建 参考文档 redis入门(二) 前言 在redis入门(一)简单 ...

  8. Mysql数据库(二)Mysql数据库管理

    一 .创建数据库 1.通过CREATE DATABASE db_library;创建名称为db_library的数据库. 2.通过CREATE SCHEMA db_library1;创建名称为db_l ...

  9. (一) kinect概述

    Kinect可以进行身体节点定位,姿势定位,人脸识别等功能,在此先做简单介绍,后续主要介绍插件的应用,毕竟自己开发识别过程太消耗时间. (注1:Kinect官方虽然提供了Unity的APi,但是方便起 ...

  10. 网络数据请求request

    关于网络数据请求的类很多,httpwebrequest,webrequest,webclient以及httpclient,具体差别在此不在赘述,在应用方面介绍webclient与httpclient则 ...