Android 其他应用程序的 Broadcastreceiver install/delete 不工作
Android Broadcastreceiver for other apps install/delete not working
我有一个 Broadcastreceiver 来检测其他应用程序的安装或删除。
这是我的Java
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_PACKAGE_ADDED
和 ACTION_PACKAGE_REPLACED
等广播。这对 Android 7.1 及更低版本没问题。在 Android 8.0+ 上,您无法在清单中注册这些广播,如 most implicit broadcasts are banned.
相反,您需要定期 call getChangedPackages()
on PackageManager
,例如通过 WorkManager
。这不会为您提供实时结果,但实时结果不再是 Android 8.0+ 的选项。
我有一个 Broadcastreceiver 来检测其他应用程序的安装或删除。
这是我的Java
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_PACKAGE_ADDED
和 ACTION_PACKAGE_REPLACED
等广播。这对 Android 7.1 及更低版本没问题。在 Android 8.0+ 上,您无法在清单中注册这些广播,如 most implicit broadcasts are banned.
相反,您需要定期 call getChangedPackages()
on PackageManager
,例如通过 WorkManager
。这不会为您提供实时结果,但实时结果不再是 Android 8.0+ 的选项。