需要实现此功能,一般实际开发是在自动版本更新上,当更新完开始自动安装完毕后,删除内存卡里的安装包。实现方式很简单,监听应用广播,获取内存卡下的文件,删除!
1、监听广播
  1. package com.example.a75213.testdownloaddemo;
  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.widget.Toast;
  6. import com.example.a75213.testdownloaddemo.contant.comm;
  7. /**
  8. * Created by 75213 on 2017/11/7.
  9. */
  10. public class InitApkBroadCastReceiver extends BroadcastReceiver {
  11. @Override
  12. public void onReceive(Context context, Intent intent) {
  13. if (Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())) {
  14. comm.rmoveFile("http://imtt.dd.qq.com/16891/7C7BB50B68B684A36339AF1F615E2848.apk");
  15. Toast.makeText(context , "监听到系统广播添加" , Toast.LENGTH_LONG).show();
  16. }
  17. if (Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) {
  18. comm.rmoveFile("http://imtt.dd.qq.com/16891/7C7BB50B68B684A36339AF1F615E2848.apk");
  19. Toast.makeText(context , "监听到系统广播移除" , Toast.LENGTH_LONG).show();
  20. System.out.println("");
  21. }
  22. if (Intent.ACTION_PACKAGE_REPLACED.equals(intent.getAction())) {
  23. comm.rmoveFile("http://imtt.dd.qq.com/16891/7C7BB50B68B684A36339AF1F615E2848.apk");
  24. Toast.makeText(context , "监听到系统广播替换" , Toast.LENGTH_LONG).show();
  25. }
  26. }
  27. }
2、记得给删除权限和广播注册【AndroidMainifest】
  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  2. <receiver
  3. android:name=".InitApkBroadCastReceiver"
  4. android:enabled="true">
  5. <intent-filter>
  6. <action android:name="android.intent.action.PACKAGE_ADDED" />
  7. <action android:name="android.intent.action.PACKAGE_REPLACED" />
  8. <action android:name="android.intent.action.PACKAGE_REMOVED" />
  9. <data android:scheme="package" />
  10. </intent-filter>
  11. </receiver>
 

3、删除工具类

  1. package com.example.a75213.testdownloaddemo.contant;
  2. import android.os.Environment;
  3. import java.io.File;
  4. /**
  5. * Created by 75213 on 2017/11/1.
  6. */
  7. public class comm{
  8. public static File getPathFile(String path){
  9. String apkName = path.substring(path.lastIndexOf("/"));
  10. File outputFile = new File(Environment.getExternalStoragePublicDirectory
  11. (Environment.DIRECTORY_DOWNLOADS), apkName);
  12. return outputFile;
  13. }
  14. public static void rmoveFile(String path){
  15. File file = getPathFile(path);
  16. file.delete();
  17. }
  18. }

Android APK安装完成自动删除安装包的更多相关文章

  1. H5+app,自动更新后自动删除安装包

    H5+app 自动删除安装包 一.前言 之前做好的app自动更新,遗留下了一个问题,就是自动更新后安装包没有自行删除掉. 好像现在的手机的系统是有安装完自动清理安装包的.想我这个H5+的app安装完后 ...

  2. Android 应用安装成功之后删除apk文件

    问题: 在应用开发中遇到需要这样的需求:在用户下载我们的应用安装之后删除安装包. 解决: android会在每个外界操作APK的动作之后发出系统级别的广播,过滤器名称: android.intent. ...

  3. CentOS yum安装软件时保留安装包及依赖包或者自动下载安装包及相关依赖包

    CentOS上安装某个软件一般都有很多相关的依赖包,当然,这也与我们安装时software selection步骤中选择的版本有关系,我们服务器在安装CentOS时一般选择Basic Web Serv ...

  4. 把app(apk和ipa文件)安装包放在服务器上供用户下方法

    怎么把app(apk和ipa文件)安装包放在服务器上供用户下载? IIS服务器网站不能下载.apk文件的原因:IIS的默认MIME类型中没有.apk文件,所以无法下载.解决办法:给.apk格式文件添加 ...

  5. 修改visual studio setup 安装顺序(解决新版安装包无法自动移除老版本程序的问题)

    背景 visual studio setup 支持自动删除之前版本的安装,需要设置RemovePreviousVersions = true, DetectNewerInstalledVersion ...

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

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

  7. Android -- Apk安装简诉

    安装涉及到如下几个目录 system/app  ​ 系统自带的应用程序,无法删除 data/app   用户程序安装的目录,有删除权限. 安装时把apk文件复制到此目录 ​ data/data  存放 ...

  8. Android APK安装过程学习笔记

    1.什么是APK APK,即Android Package,Android安装包.不同平台的安装文件格式都不同,类似于Windows的安装包是二进制的exe格式,Mac的安装包是dmg格式.APK可以 ...

  9. Linux 环境编译安装mysql (源码安装包)

    标注: Linux需要先配置网络yum源,确定yum能在线安装软件包,方便测试过程中安装部分依赖包.配置163网易提示的网络yum源参考博客  http://www.cnblogs.com/zoulo ...

随机推荐

  1. SpringMVC验证框架Validation特殊用法

    基本用法不说了,网上例子很多,这里主要介绍下比较特殊情况下使用的方法. 1. 分组 有的时候,我们对一个实体类需要有多中验证方式,在不同的情况下使用不同验证方式,比如说对于一个实体类来的id来说,保存 ...

  2. 在Linux下如何限制命令执行的时间?

    在Linux下如何限制命令执行的时间?两种解决方法,如下: 1: Linux命令——timeout 运行指定的命令,如果在指定时间后仍在运行,则杀死该进程.用来控制程序运行的时间. 2: comman ...

  3. Fibre Channel address weaknesses

    http://searchitchannel.techtarget.com/feature/Fibre-Channel-address-weaknesses Figure 2.1 Five layer ...

  4. 《Android开发艺术探索》图书勘误

    第一章 在13页提到"系统仅仅在Activity异常终止的时候才会调用onSaveInstanceState与onRestoreInstanceState来储存和恢复数据.其它情况不会触发这 ...

  5. python解析命令行参数

    常常需要解析命令行参数,经常忘记,好烦,总结下来吧. 1.Python 中也可以所用 sys 的 sys.argv 来获取命令行参数: sys.argv 是命令行参数列表 参数个数:len(sys.a ...

  6. MySQL源代码解读

    第一步: 下载bison-2.4.1-setup.exe链接地址 第二步: 下载cmake-2.8.6-win32-x86.exe链接地址 第三步: 下载MySQL链接地址 G:\Mlearn\mys ...

  7. Uncaught DOMException: Failed to execute 'removeChild' on 'Node': The node ……

    解决办法是加一个等待时间即可解决问题: setTimeout(function () { you code }, );

  8. 〖Linux〗gun screen 配置文件

    screen 默认使用 bash shell,一般情况下screen只用于android build,tmux则是我的日常使用多终端管理工具. # Default Shell shell " ...

  9. django之创建第5个项目-条件语句

    1.index <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  10. codevs 3083 二叉树

    题目描述 Description 同学们都知道二叉树的定义,也都知道3个结点的二叉树有5种, 现给你二叉树的结点个数n,要你编程输出不同形态二叉树的种数. 输入描述 Input Description ...