broadcastreceiver - 应用安装后删除 Apk

标签 broadcastreceiver apk android-broadcast android

我正在开发一个应用程序,我必须在其中限制用户个人共享 apk。人们可以下载它,但不应允许通过蓝牙等个人共享应用程序 (apk)。

我搜索并阅读了很多有关同一问题的信息,但没有找到完整的答案。我已经尝试了以下。

  1. How to get the file *.apk location in Android device

  2. Download, Installing and Delete .apk file on android device programmatically from a website other than marketplace

我从上面了解到,执行此操作的简单方法是在安装应用程序后从用户设备中删除 apk 文件。 (我也知道用户可以通过 root 访问再次生成此 apk,但这很好,因为至少我可以限制很多但不是全部)。

现在我已经尝试过,我正在注册一个广播接收器,并且在我的 onReceive() 方法中我有以下内容,

PackageManager pm = getPackageManager();

for (ApplicationInfo app : pm.getInstalledApplications(0)) {
 if (myPackage.equalsIgnoreCase(app.packageName)) {
    apkPath = app.sourceDir;
    break;
 }
}
Log.d("Package", myPackage + " - APK - " + apkPath);
if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {
    File sdcard = Environment.getExternalStorageDirectory();
    File file = new File(sdcard, apkPath);
    file.delete();
}

但这没有任何作用,因为我不知道应该使用 IntentFilter 来注册它。

任何人都可以指导我下一步是什么吗?如果我完全走错了路,请帮助我实现上述目标?

任何帮助将不胜感激。 :)

最佳答案

在更高版本的 Android 上,某些(全部?)广播只有在至少手动打开应用一次后才会发送到该应用。这是一项无法规避的安全功能。

关于broadcastreceiver - 应用安装后删除 Apk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23469247/

相关文章:

android - BOOT_COMPLETED 的 BroadcastReceiver 未从 sleep() 返回

android - 解码apk文件时如何获取R.java文件?

java - 从通知接收 Intent 的 Receiver 问题

android - 当有人从任务管理器按下我的应用程序时如何禁用对 onCreate 的调用

android - 如何检测应用程序是否关闭

android - android广播接收器会消耗电池生命周期吗?

java - 如何从 26 API 以上的后台应用程序启动 Activity ?

android - C2DM BroadcastReceiver 与多个 Activity 之间的通信

android - 如何在已获得 Google Maps API key 后更改我的包名称?

android - 手机上缺少 ADB 安装的应用程序的启动器图标