安卓软件安装成功后通过广播-接收器删除apk文件
在安卓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";@Overridepublic 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 !
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
