3

我想检测用户何时安装或删除应用程序,但我没有找到BroadcastReceiver这样做的。

在我的应用程序中,我通过 class 获取有关已安装应用程序的信息PackageManager,但我不想定期扫描应用程序。有没有BroadcastReceiver这样做的?或者任何ContentObserver?是否可以收到应用程序已安装或删除的通知?

4

1 回答 1

8

您可以注册一个BroadcastReceiverusing Intent.ACTION_PACKAGE_ADDED(以及 Intent.ACTION_PACKAGE_REMOVED和/或Intent.ACTION_PACKAGE_CHANGED如果需要)。例如,

void registerReceiver() {
    IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
    filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
    filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
    filter.addDataScheme("package_name");     
}

public void onReceive(Context context, Intent intent) {
    final String action = intent.getAction();

    if (action.equals(Intent.ACTION_PACKAGE_ADDED)) {
        Uri data = intent.getData();
        String pkgName = data.getEncodedSchemeSpecificPart();
    }

    /* etc. */
}
于 2012-07-14T22:23:31.913 回答