2013-10-23 46 views
0

以下是我AndroidManifest的代碼活動是否必須在下列情況下?

//廣播接收機

<receiver android:name="com.broadcastreceivers.ApplicationInstalled" > 
    <intent-filter android:priority="101" > 
     <action android:name="android.intent.action.SIG_STR" /> 
    </intent-filter> 
</receiver> 

//啓動活動

<activity 
    android:name="com.activity.MasterActivity" 
    android:label="@string/app_name" 
    android:noHistory="true" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

我不希望有活動在我的應用程序,所以當我的評論或刪除我的AndroidManifest.xml中的活動聲明部分停止爲信號更改而觸發Broadcast Receiver事件。但是,當我如上所述宣佈活動時,它可以正常工作。

我的問題是,爲什麼我們在這個項目需要的活動?

編輯:我使用的是Android 2.3.3版本目前。

回答

2

問題:

時安裝的應用程序,他們是在一個stopped狀態,所以他們將無法運行,直到用戶明確地啓動它們與3.1開始。

結果,首次安裝應用程序時,他們完全被系統忽略,直到並且除非用戶手動啓動的東西:點擊一個啓動活動或添加一個應用程序窗口小部件,最有可能的。

開發商誰已經依賴於得到某種系統廣播的,無需用戶干預將需要調整爲Android 3.1及更高版本的應用程式。

釋:

在你的問題中提到,當你聲明Activity以上<intent-filter>,它會啓動應用程序,所以現在你的應用程序將在active狀態而非stopped state.That是爲什麼,現在它將能夠接收broadcasts

參考:

blogpost by CommonsWare

我希望這會有所幫助!

+0

部分同意你的看法。但我有另一個項目來監控收到的短信,它只有一個廣播接收器,並且自從大約2-3個月後它工作得很好。然而,我從你的答案中學到了這些新信息。謝謝。 – Vigbyor

+0

好的,現在我重新檢查一下這個監視器應用程序,它已經設置了Android 2.0 API。我認爲這就是它工作的原因。但我在這個問題中詢問的應用程序是使用2.3.3版本 – Vigbyor

+0

@Vigbyor:您是否正在使用版本爲2.3.3的真實設備測試您的應用程序? –

相關問題