2010-10-14 134 views
0

我有一個活動,它也包含來自自制服務的特定廣播。 雖然我已經注意到,當我將其添加爲AndroidManifest文件的操作時,應用程序在調試時不會真正開始。 該活動也是我的主要活動:Intent_Filter操作在AndroidManifest中不起作用

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

但是當我添加自己的額外行動,以它它只是不會拿起廣播,它不會啓動出去的本身,而調試????

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    <action android:name="development.android.service.musicServiceUpdate"> 
</intent-filter> 

任何想法是什麼錯誤在這裏或爲什麼我的活動不會捕捉廣播? 是否可以將兩個操作指定爲.MAIN操作?

/編輯:

嘗試了以下內容:

<activity android:name=".nowPlayingGUI" 
        android:label="@string/app_name" 
        android:screenOrientation="portrait" 
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
        android:launchMode="singleTask">  
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <receiver android:name=".nowPlayingGUI"> 
      <intent-filter> 
       <action android:name="development.android.service.musicServiceUpdate"></action> 
      </intent-filter> 
     </receiver> 

這是行不通的,並會拋出:

11月10日至14日:57:04.412:ERROR/AndroidRuntime(11947 ):java.lang.RuntimeException:無法實例化接收器development.android.myPlayer.nowPlayingGUI:java.lang.ClassCastException:development.android.myplayer.nowPlayingGUI

10-14 1 1:57:04.412:錯誤/ AndroidRuntime(11947):在android.app.ActivityThread.handleReceiver(ActivityThread.java:2520)

回答

0

每個意圖過濾器只能有一個操作(但可以有多個類別)。改爲添加一個額外的意圖過濾器。

+0

它應該有一個類別?或者是足夠的行動? – TiGer 2010-10-14 08:51:20

+0

如果你想添加額外的活動,你至少應該添加「默認」標籤。 。如果你想要註冊一個廣播接收機,那麼這個之上的答案就是你要找的。 – 2010-10-14 09:06:30

+0

其實這是完全相同的活動,這應該是主要和也是一個接收器... – TiGer 2010-10-14 09:57:51

0

有你在AndroidManifest.xml中

添加標籤假設你有一個活動和廣播接收器,我想你的清單XML將包含您的應用程序標籤內類似這樣的東西:

<activity android:name=".Main" 
       android:label="@string/app_name"> 
     <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <receiver android:name =".myreceiver"> 
      <intent-filter> 
       <action android:name=development.android.service.musicServiceUpdate /> 
     </intent-filter> 
    </receiver> 
+0

好的,但我的接收器也是.Main類,你建議... – TiGer 2010-10-14 09:10:36

+0

好吧,試過這個,現在當廣播應該收到相同的活動它會拋出 10-14 11:57:04.412:錯誤/ AndroidRuntime(11947):java.lang.RuntimeException:無法實例化接收器development.android.myPlayer.nowPlayingGUI:java.lang.ClassCastException:development.android.myplayer.nowPlayingGUI 10-14 11:57:04.412:ERROR/AndroidRuntime (11947):在android.app.ActivityThread.handleReceiver(ActivityThread。java:2520) – TiGer 2010-10-14 10:00:33

+0

@TiGer:我認爲你需要爲每個Activity,Service,Broadcast Receiver和Content Provider有不同的類。你必須在清單文件中提到應用程序中有多少活動,接收者,提供者或服務。 – kiki 2010-10-14 10:01:23

3

我剛剛遇到了同樣的問題。嘗試更改該意圖中的操作順序 - 過濾器到此:

<intent-filter> 
    <action android:name="development.android.service.musicServiceUpdate"> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter>