2013-04-16 40 views
0

我試圖通過掃描標籤來啓動我的應用程序,但我得到的意圖是主動作,而不是我發現的NDEF。由Action Main(來自AAR)而不是NDEF發起的應用程序發現

這裏是我的代碼,我用它來寫NdefMessage:

NdefRecord aar = NdefRecord.createApplicationRecord("com.example.mynfc"); 
NdefRecord record = createUriRecord("www.stackoverflow.com"); 
NdefMessage message = new NdefMessage(new NdefRecord[]{record, aar}); 

與createUriRecord:

private NdefRecord createUriRecord(String text){ 
    String uniqueId = text.substring(4);  
    byte[] uriField = uniqueId.getBytes(Charset.forName("US-ASCII")); 
    byte[] payload = new byte[uriField.length+1];                  //add 1 for the URI Prefix 
    payload[0] = 0x01;                         //prefixes http://www. to the URI 
    System.arraycopy(uriField, 0, payload, 1, uriField.length);               //appends URI to payload 
    NdefRecord uriRecord = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_URI, new byte[0], payload); 
    return uriRecord; 
} 

這裏是清單與意圖過濾器部分:

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppBaseTheme" > 
    <activity 
     android:name="com.example.mynfc.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:mimeType="*/*" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.nfc.action.TECH_DISCOVERED" /> 

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

     <meta-data 
      android:name="android.nfc.action.TECH_DISCOVERED" 
      android:resource="@xml/techs" /> 

     <intent-filter> 
      <action android:name="android.nfc.action.TAG_DISCOVERED" /> 

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

我在做什麼錯了? aar記錄放置在第二位,intent過濾器考慮所有的mime類型。 thx尋求幫助

回答

1

您正在創建一個URI類型的記錄,同時過濾MIME類型的記錄。改爲過濾URI型記錄。除此之外,URI記錄有效載荷應該以一個方案開始,比如「http://」(否則過濾器永遠不會匹配)。

+0

Ty,實際上我想啓動我的活動,以便在瀏覽器中打開網頁。但是如果我拿出AAR,這是自動完成的。順便說一下,行:「有效載荷[0] = 0x01;」增加了http:// – Jinbonka

+0

我忽略了'payload [0] = 0x01;';我的壞,對不起! –

相關問題