安卓软件安装成功后通过广播-接收器删除apk文件
来源:互联网 发布:群星修改数据 编辑:程序博客网 时间:2024/05/17 22:19
在安卓APP项目开发中,我们有这样的需求:
APP安装更新完成后,需要把 APK 文件删除
这里,我们可以通过安卓四大组件之一 —— 广播-接收器,来助阵。
广播有动态注册和静态注册两种方式,此处用静态注册方式。
在 AndroidManifest.xml 文件中静态注册广播接收器:
<receiver android:name="具体包名.广播接收器名" android:enabled="true"> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <!--涉及到存储卡状态改变的时候必须添加--> <data android:scheme="package" /> </intent-filter> </receiver>
几个 intent-filter name 相信从名字就能知道什么意思了。
- PACKAGE_ADDED 接受包被添加时发送的广播
- PACKAGE_REPLACED 接受包被替换时发送的广播
- PACKAGE_REMOVED 接受包被移除时发送的广播
安卓系统在我们安装或卸载APP等操作时,会发送以上的一些广播包,我们这里设个接收器来”监听“这些操作的发生。
新建一个类,继承自 BroadcastReceiver,重写 onReceive 方法,具体逻辑处理可在此书写。
package 包名;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Environment;import android.util.Log;import java.io.File;/** * Created by Moses on 2017/12/5. * * PackageInstallSuccessfulReceiver * * 接受 广播 软件包被添加、删除和替换时发出 * */public class PackInstSucRecei extends BroadcastReceiver { private String apkfileName = "app-debug.apk"; @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())) { Log.d(TAG, "监听到系统广播,包被添加: "); //删除apk文件 deleteApkfile(apkfileName); } if (Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) { Log.d(TAG, "监听到系统广播,包被移除: "); Log.d(TAG, "onReceive: " + intent.getDataString()); } if (Intent.ACTION_PACKAGE_REPLACED.equals(intent.getAction())) { Log.d(TAG, "监听到系统广播,包被替换: "); Log.d(TAG, "onReceive: "+ intent.getPackage()); deleteApkfile(apkfileName); } } public Boolean deleteApkfile(String apkFileName){ //Apk文件路径可自定义,此处用 download 文件夹 File apkfile = new File(Environment .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) .getPath(), apkFileName); if (!apkfile.exists()) { Log.d(TAG, "apkfile delete already! "); } else { //调用现成的文件操作方法删除文件 if (apkfile.delete()) Log.d(TAG, "apkfile delete successfully! "); } return false; }}
满足这个需求其实很简单,重要在于我们得先知道,”原来还可以这样做”,换句话说:我们得现有这样的认知!
认知比知识更重要
know How | Why, and then do it and make it perfect !
阅读全文
0 0
- 安卓软件安装成功后通过广播-接收器删除apk文件
- 安卓下载功能中的广播接收器
- 安卓开发之广播接收器BroadcastReceiver
- 遍历读取apk安装后压缩包内的文件,判断软件是否安装成功
- android应用安装成功之后删除apk文件
- android应用安装成功之后删除apk文件
- 安卓开发:广播接收器的使用【实现传值】
- 安卓广播接收器和观察者的模式
- 安卓apk文件在手机上安装后看不到图标
- 安卓模拟器安装apk文件
- 安卓通过意图使系统安装apk
- MAC连接安卓手机通过adb指令安装apk
- 如何通过广播接收器刷新界面
- 安卓打包后的apk安装后闪退解决策略
- 在虚拟机上安装apk安卓软件
- apk文件安装成功后,Android AVD桌面上不显示图标
- 广播接收器
- 广播接收器
- 记录以下Java的基本知识
- 图的幂律度分布 power-law degree distributios
- 记第一次用C语言写代码的经历
- VS_C_17/11/22 C中if与switch的区别
- 嵌套类和内部类(转,有修改)
- 安卓软件安装成功后通过广播-接收器删除apk文件
- 问题 H: 逆置正整数
- python selenium开关网页刷新流量
- 计算机科学与Python编程导论_MIT 学习笔记(一)
- 问题 I: 找中间数
- 问题 J: C语言实验题——温度转换(JSU-ZJJ)
- Excel在统计分析中的应用—第九章—非参数检验-x2检验-正态分布拟合优度检验
- ZooKeeper原理及使用
- leetcode 290[easy]----Word Pattern