2013-04-16 1 views
0

Я пытаюсь запустить приложение, сканируя тег, но намерение, которое я получаю, - это действие Main, а не NDEF Discovered, как я бы хотел.Приложение, запущенное 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 занимает 2-е место, а фильтр намерений учитывает все типы mime. thx для справки

ответ

1

Вы создаете запись типа URI при фильтрации записей типа MIME. Вместо этого выберите фильтр для записей типа URI. Кроме того, полезная нагрузка записи URI должна начинаться со схемы, такой как «http: //» (иначе фильтр никогда не будет соответствовать).

+0

Ty, на самом деле я хотел запустить свою деятельность, чтобы открыть веб-страницу в браузере. Но это делается автоматически, если я выберу AAR. Кстати, строка: «полезная нагрузка [0] = 0x01;» добавляет http: // – Jinbonka

+0

Я упустил «полезную нагрузку [0] = 0x01;'; мой плохой, извините! –

 Смежные вопросы

  • Нет связанных вопросов^_^