2013-06-12 218 views
4

我正在尝试创建没有活动/服务的BroadcastReceiver。虽然当我在代码中存在活动时注册并执行代码时,我没有任何问题,但当我删除活动时它失败。如何在没有活动/服务的情况下创建BroadcastReceiver?

我使用清单(!)注册BroadcastReceiver但是当从项目中删除活动时不会调用它。

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <receiver android:name="com.ge.test.InstallsListener" > 
     <intent-filter> 
      <data android:scheme="package" /> 
      <action android:name="android.intent.action.PACKAGE_ADDED" android:priority="100"/>     
     </intent-filter> 
    </receiver> 
</application> 

谢谢。

+0

在活动销毁之前,您必须取消注册接收方。因此,我认为你只能在Manifest中声明一个接收器。 –

+0

完全阅读这个照顾http://developer.android.com/guide/components/fundamentals.html –

+0

@ChristopheLongeanie:你绝对可以在清单中注册一个'BroadcastReceiver',在清单中只注册一个'BroadcastReceiver'。 – CommonsWare

回答

10

但是当从项目中删除活动时不会调用它。

在Android 3.1及更高版本上,用户必须在任何清单注册的BroadcastReceiver工作之前启动您的一项活动。

请参阅the Android 3.1 release notes,特别是“停止的应用程序启动控件”部分。

+0

谢谢,可能是这种情况。所以我必须启动一项服务来实现这个功能? (我的应用程序不需要用户界面) – Eden

+0

@Eden:“所以我必须启动一个服务来运行它?” - 好吧,除非您知道要启动服务的设备上有其他应用程序,否则无法启动您的服务。 “我的应用程序不需要用户界面” - 很可能,您需要启用此“BroadcastReceiver”。除此之外,您需要允许用户控制后台工作的行为,您需要向他们显示您的许可协议,您需要向他们显示文档,向他们显示获取技术支持的联系信息等。 – CommonsWare

+0

@ CommonWare:感谢您的帮助。这正是我需要的信息。但是,您对我的应用程序的安装位置或应用程序的安装位置有限的看法。 没有进行太多的细节介绍,该应用程序适用于拥有25名员工的公司。因此,不需要许可协议或联系信息或任何类型的用户界面。 – Eden

相关问题