如何在Android设备中检测新应用程序

如何在Android设备中检测新应用程序,android,broadcastreceiver,contentobserver,android-package-managers,Android,Broadcastreceiver,Contentobserver,Android Package Managers,我想检测用户何时安装或删除应用程序,但我没有找到执行此操作的BroadcastReceiver 在我的应用程序中,我使用类PackageManager获取有关已安装应用程序的信息,但我不想定期扫描这些应用程序。是否有任何BroadcastReceiver可以这样做?或任何内容观察者?是否有可能收到应用程序已安装或删除的通知?您可以使用Intent.ACTION\u PACKAGE\u ADDED(以及Intent.ACTION\u PACKAGE\u removed和/或Intent.ACTIO

我想检测用户何时安装或删除应用程序,但我没有找到执行此操作的
BroadcastReceiver


在我的应用程序中,我使用类
PackageManager
获取有关已安装应用程序的信息,但我不想定期扫描这些应用程序。是否有任何
BroadcastReceiver
可以这样做?或任何
内容观察者
?是否有可能收到应用程序已安装或删除的通知?

您可以使用
Intent.ACTION\u PACKAGE\u ADDED
(以及
Intent.ACTION\u PACKAGE\u removed
和/或
Intent.ACTION\u PACKAGE\u更改,如果需要)。比如说,

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. */
}

我相信答案是否定的……看来我错了,:-),我忘了那个!如果您有雄心壮志,您应该看看
AsyncTaskLoader
类。。。在我看来,实现自己的
Loader
将是一次非常好的学习经历:p文档中的内容实际上与您描述的完全一样(或者至少从外观上看,我相信它确实如此)。过来看!谢谢大家。我不知道该怎么做,但我想在应用程序列表发生变化时将数据上传到服务器,而不要求应用程序此时正在运行,所以我想我会使用服务来完成,这是最好的方式吗?:)我认为
Intent.ACTION\u PACKAGE\u已更改
Intent.ACTION\u PACKAGE\u已添加
Intent.ACTION\u PACKAGE\u已删除
,否?否。您可以从中查看:谢谢我正在寻找“getEncodedSchemeSpecificPart”,我原以为它是我需要的getHost,但uri中缺少//打破了这一点。。。