Java 其他应用的Android Broadcastreceiver安装/删除不工作
我有一个Broadcastreceiver来检测其他应用的安装或删除 这是我的JavaJava 其他应用的Android Broadcastreceiver安装/删除不工作,java,android,broadcastreceiver,Java,Android,Broadcastreceiver,我有一个Broadcastreceiver来检测其他应用的安装或删除 这是我的Java public class AppListener extends BroadcastReceiver { @Override public void onReceive(Context var1, Intent var2) { // TODO Auto-generated method stub Log.d("AppTag", "Received!"); }
public class AppListener extends BroadcastReceiver {
@Override
public void onReceive(Context var1, Intent var2) {
// TODO Auto-generated method stub
Log.d("AppTag", "Received!");
}
}
这是我的舱单
<receiver android:name=".AppListener">
<intent-filter android:priority="999">
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<action android:name="android.intent.action.PACKAGE_CHANGED" />
<data android:scheme="package"/>
</intent-filter>
</receiver>
但每当我安装或删除一个应用程序时,什么都不会发生 您正在尝试收听添加的
ACTION\u PACKAGE\u
和替换的ACTION\u PACKAGE\u等广播节目。对于安卓7.1及更低版本来说,这很好。在Android 8.0+上,您无法在清单中注册这些广播,如下所示
相反,您需要定期更新,例如通过WorkManager
。这不会给你实时结果,但在Android 8.0+上实时结果不再是一个选项。你正在测试哪个版本的Android?Android Oreo(8.0)谢谢。我想补充一点,你对Stackoverflow的总体评价对我非常有帮助。从长远来看,测试这种方法根本不可靠。例如,如果我在应用程序安装后不久重新启动设备,我的应用程序将不会检测到该安装:(@MoDev:这一特定限制并不让我感到惊讶。广播也会有同样的限制,因为不能保证在设备关闭之前你会收到广播并能够做有意义的工作。但是,WorkManager
轮询引入的延迟肯定会增加发生这种风险的时间xists.在处理WorkManager
或JobScheduler
时,电池优化或打瞌睡模式如何?@MoDev:如果在这些模式处于活动状态时安装或升级应用程序,我会感到惊讶。而且,安装/升级操作可能会允许其他作业运行。总体而言,如果你的应用程序需要100%可靠的应用安装/升级实时知识,你的应用注定失败。