Cómo simular el toque de etiqueta desde otra aplicación
Quiero simular el evento táctil para mi aplicación. Mi manifiesto es como
<activity
android:name=".activity.TagActivity_"
android:label="@string/app_name"
android:launchMode="singleTask"
android:noHistory="true"
android:permission="android.permission.NFC"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
</intent-filter>
<meta-data
android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="ext"
android:pathPrefix="/abc:d"
android:scheme="vnd.android.nfc" />
</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>
Pregunta (1): Quiero invocar mi solicitud desde otra aplicación. ¿Cómo puedo hacer eso? Mi código actual es como:
try {
final Intent intent = new Intent(NfcAdapter.ACTION_NDEF_DISCOVERED);
NdefMessage ndefMessage = buildNdefMessage(getTagData());
intent.putExtra(NfcAdapter.EXTRA_NDEF_MESSAGES, new NdefMessage[] {ndefMessage});
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
Pero esto no invoca mi solicitud. probablemente porque el tipo de datos y el prefijo de ruta no coinciden. ¿Cómo paso esto al comenzar la actividad?
Pregunta (2): para fines temporales he agregado
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
para que funcione, y se invoca mi aplicación. Pero mientras leo la etiqueta, verifico el tipo de etiqueta, y como no paso ningún tipo de etiqueta, mi aplicación se bloquea. Entonces, ¿cómo creo una instancia de etiqueta? No hay constructor para esto. Quiero decir que no puedo hacerNdef ndef = new Ndef();
. Y básicamente no tengo una etiqueta, así que no puedo hacer eventoNdef ndef = Ndef.get(tag);
.