2014-01-08 49 views
1

我有兩個活動在我的應用程序具有相同的意圖過濾器「android.nfc.action.NDEF_DISCOVERED」,有沒有任何方式告訴活動programaticaly,我想開始一個特定的活動,而不是選擇在發現ndef時啓動哪個活動?更清楚的是,一個設備運行Activity1,第二個設備運行Activity2,每當我從一個設備或另一個設備發出光束時,設備詢問我要啓動哪個活動,因爲它們都具有相同的意圖過濾器。與NDEF_DISCOVERED的多個活動

這裏是我的清單:

<activity 
      android:label="@string/app_name" 
      android:name=".Activity1" 
      android:screenOrientation="portrait" 
      > 
      <intent-filter > 
       <action android:name="com.example.activity1" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 

       <category android:name="android.intent.category.DEFAULT" /> 

       <data android:mimeType="text/plain" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:label="@string/app_name" 
      android:name=".Activity2" 
      android:screenOrientation="portrait" 
      > 
      <intent-filter > 
       <action android:name="com.example.activity2" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 

       <category android:name="android.intent.category.DEFAULT" /> 

       <data android:mimeType="text/plain" /> 
      </intent-filter> 
     </activity> 

回答

2

創建第三,無形的活動(比如,RedirectorActivity),沒有任何的佈局和風格NoDisplay,並從最近用過排除。然後將您的intent-filter僅分配給該活動(從其他人中刪除),並添加的中的所有必要邏輯,以通過常規startActivity()從其啓動正確的活動,最後使用finish()終止重定向器。

0

如果您想讓當前運行的活動優先於其他活動,則應使用NFC前臺調度系統。見Advanced NFC: Using the NFC Foreground Dispatch System。 (另請參閱此question。)

另外,您可能需要考慮應用程序是否有意使用不同類型的NDEF記錄來啓動您的兩項活動。在這種情況下,發件人可以決定應該開始哪項活動。