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_ADDEDACTION_PACKAGE_REPLACED 等广播。这对 Android 7.1 及更低版本没问题。在 Android 8.0+ 上,您无法在清单中注册这些广播,如 most implicit broadcasts are banned.

相反,您需要定期 call getChangedPackages() on PackageManager,例如通过 WorkManager。这不会为您提供实时结果,但实时结果不再是 Android 8.0+ 的选项。