Android 監聽應用安裝 刪除安裝包
阿新 • • 發佈:2020-10-25
//類UpdateInfo //類 public class UpdateInstallReceiver extends BroadcastReceiver { private static UpdateInfo mUpdateInfo; @Override public void onReceive(Context context, Intent intent) { //獲取到網路上apk的資訊 mUpdateInfo = UpdateManager.getmUpdateInfo(); switch (Objects.requireNonNull(intent.getAction())) { case Intent.ACTION_PACKAGE_ADDED: // Toast.makeText(context, "有應用被新增", Toast.LENGTH_LONG).show(); UpdateUtils.clearUpdateApk(context, mUpdateInfo.getApkName()); break; case Intent.ACTION_PACKAGE_REMOVED: // Toast.makeText(context, "有應用被刪除", Toast.LENGTH_LONG).show(); UpdateUtils.clearUpdateApk(context, mUpdateInfo.getApkName()); break; case Intent.ACTION_PACKAGE_REPLACED: // Toast.makeText(context, "有應用被替換", Toast.LENGTH_LONG).show(); UpdateUtils.clearUpdateApk(context, mUpdateInfo.getApkName()); break; case Intent.ACTION_PACKAGE_CHANGED: // Toast.makeText(context, "有應用被改變", Toast.LENGTH_LONG).show(); break; case Intent.ACTION_PACKAGE_RESTARTED: // Toast.makeText(context, "有應用被重啟", Toast.LENGTH_LONG).show(); break; } } } //註冊 UpdateInstallReceiver updateInstallReceiver = new UpdateInstallReceiver(); IntentFilter intentFilter1 = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED); intentFilter1.addAction(Intent.ACTION_PACKAGE_ADDED); intentFilter1.addAction(Intent.ACTION_PACKAGE_REPLACED); intentFilter1.addAction(Intent.ACTION_PACKAGE_REMOVED); intentFilter1.addDataScheme("package"); context.registerReceiver(updateInstallReceiver, intentFilter1); //登出 context.unregisterReceiver(updateInstallReceiver); //刪除安裝包 public static void clearUpdateApk(Context context, String filename){ File updateDir; File updateFile; if (Environment.MEDIA_MOUNTED.equals(Environment .getExternalStorageState())) { updateDir = new File(Environment.getExternalStorageDirectory(), UpdateInfo.updateDownloadDir); } else { updateDir = context.getFilesDir(); } updateFile = new File(updateDir.getPath(),filename + ".apk"); if (updateFile.exists()) { UpdateUtils.print("Update: delete update apk"); boolean cls = updateFile.delete(); Toast.makeText(context, String.format("%s.apk is deleted", filename), Toast.LENGTH_LONG).show(); } else { UpdateUtils.print("Update: no update apk to delete"); } }