【发布时间】:2014-05-16 12:55:14
【问题描述】:
您好,我正在使用 android。首先我不熟悉广播接收器。我需要创建一个应用程序,如果有人安装了我的应用程序,广播接收器将运行它检查安装状态,如 ACTION_PACKAGE_INSTALL 和 android.intent.action.PACKAGE_REMOVED .但是即使我的应用程序已关闭,我如何才能获得这些状态?广播接收器可以吗?请帮助我,提前谢谢:)
【问题讨论】:
您好,我正在使用 android。首先我不熟悉广播接收器。我需要创建一个应用程序,如果有人安装了我的应用程序,广播接收器将运行它检查安装状态,如 ACTION_PACKAGE_INSTALL 和 android.intent.action.PACKAGE_REMOVED .但是即使我的应用程序已关闭,我如何才能获得这些状态?广播接收器可以吗?请帮助我,提前谢谢:)
【问题讨论】:
基本上,BroadcastReceiver 可以接收广播,即使您的应用程序不在前台,或者即使您的应用程序的进程不活跃。
这可以通过声明 receiver within your application's Manifest.xml file
当您在 Manifest 文件中声明接收器时 - 如果它设置了相应的意图过滤器以响应已发送的广播(在您的情况下 - ACTION_PACKAGE_INSTALL 和 PACKAGE_REMOVED 操作),系统将唤醒您的应用程序并调用您的接收器..)
但不幸的是,你也有坏消息:
来自 Android ICS 及更高版本 - 在您的应用程序由用户明确启动至少一次之前,您无法接收任何广播!
这是出于安全原因,Google 认为这是必要的,以防止恶意应用在用户根本没有启动它们的情况下完全透明地执行员工。..
所以答案基本上是 - 不!在应用至少启动一次之前,您不能执行任何代码并接收来自应用的任何事件。
顺便说一句,您不会收到 ACTION_PACKAGE_INSTALL 和 PACKAGE_REMOVED 广播,因为您自己的应用已经安装或卸载了。
再次阅读您的问题,老实说,我不确定您期望发生什么: 如果它未安装,“检查您的应用程序安装状态”是没有任何意义的。毕竟 - 如果它被卸载 - 那么它无论如何都无法运行(并执行任何代码)。
【讨论】: