2013-06-12 212 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

相關問題