Samsung Nexus S vs HTC - NFC Intenção de Filtro + AAR
-
12-12-2019 - |
Pergunta
Eu salvar o AAR na minha Tag NFC.Se eu digitalizar a TAG com o Nexus S (Android 4.1.1), recebo a NfcAdapter.ACTION_NDEF_DISCOVERED e o NFCReaderActivity diretamente inicia.
Se eu fizer o mesmo com o HTC X (Android 4.0.3), o aplicativo é iniciado, mas acabei de receber a android.intenção.a ação.PRINCIPAL e para o NFCReaderActivity não mostrar up e o Tag não está digitalizado.
Isso funciona no Samsung Nexus S, mas não no HTC:
<activity android:name=".activities.NFCWriterActivity"></activity>
<activity android:name=".activities.NFCReaderActivity">
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=".activities.NFCBeamActivity">
</activity>
<activity android:name=".activities.WifiManagerActivity"></activity>
<activity android:name=".activities.WifiConfiguratorActivity"></activity>
<activity android:name=".activities.TagWriterOptionsActivity"></activity>
<activity android:name=".activities.WifiScannerTagActivity"></activity>
<activity android:name=".activities.WifiScannerActivity"></activity>
<activity android:name=".activities.WifiListActivity">
</activity>
Esta são as minhas actividades e filtros.
Alguém uma idéia?
Editar:
Isso funciona no HTC, mas não no Samsung Nexus S:
<activity android:name=".activities.NFCWriterActivity"></activity>
<activity android:name=".activities.NFCReaderActivity">
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/vnd.wfa.wsc" />
</intent-filter>
</activity>
<activity android:name=".activities.NFCBeamActivity">
</activity>
<activity android:name=".activities.WifiManagerActivity"></activity>
<activity android:name=".activities.WifiConfiguratorActivity"></activity>
<activity android:name=".activities.TagWriterOptionsActivity"></activity>
<activity android:name=".activities.WifiScannerTagActivity"></activity>
<activity android:name=".activities.WifiScannerActivity"></activity>
<activity android:name=".activities.WifiListActivity"></activity>
Aqui eu tenho a seguinte Exceção @ HTC - talvez isso é o Problema de eu-não-sei‖:Pilha:
D/AudioTrack( 3938): stop 0x1601940
D/AudioFlinger( 142): releasing 231 from 3938
D/AudioTrack( 3938): AudioTrack destructor X
D/power ( 277): Already locked performance.
W/CpuWake ( 277): >>acquireCpuPerfWakeLock!
W/CpuWake ( 277): <<acquireCpuPerfWakeLock!
E/ActivityManager( 277): startLaunchActivity get appname failed
E/ActivityManager( 277): java.lang.NullPointerException
E/ActivityManager( 277): at com.android.server.am.ActivityStack.startLaunchActivity(ActivityStack.java:4831)
E/ActivityManager( 277): at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:3352)
E/ActivityManager( 277): at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:2509)
E/ActivityManager( 277): at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:131)
E/ActivityManager( 277): at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1751)
E/ActivityManager( 277): at android.os.Binder.execTransact(Binder.java:338)
E/ActivityManager( 277): at dalvik.system.NativeStart.run(Native Method)
I/ActivityManager( 277): START {act=android.nfc.action.NDEF_DISCOVERED typ=application/vnd.wfa.wsc pkg=at.nfc.wifi (has extras)} from pid 3938
W/ActivityManager( 277): Duplicate finish request for ActivityRecord{41163a90 com.android.nfc/.NfcRootActivity}
D/power ( 277): Already locked performance.
I/Intent ( 277): @test_code: getHtcIntentFlag: 0 obj: 1094379848
W/CpuWake ( 277): >>acquireCpuPerfWakeLock!
W/CpuWake ( 277): <<acquireCpuPerfWakeLock!
Talvez o Problema seja a versão 4.1.1 vs 4.0.3 - eu não sei:O fato é:Só Ndef funciona no Samsung, Se eu adicionar o
Solução
Há um bug no Android que faz AAR basicamente inútil.Dependendo do estado do telefone, o AAR ou a intenção de filtro está tomando precedência quando o serviço de NFC é o tratamento do tag.Se AAR, wins, você não tem meios de obter a marca.
A única maneira que você pode lidar com isso corretamente é remover a AAR, substituindo-a com uma URL para um servidor de controle, que pode redirecionar para sua página do aplicativo no Google Play.