【问题标题】:Samsung Nexus S vs HTC - NFC Intent Filter + AAR三星 Nexus S 与 HTC - NFC 意图过滤器 + AAR
【发布时间】:2012-10-02 18:20:40
【问题描述】:

我将 AAR 保存在我的 NFC 标签上。 如果我用 Nexus S (Android 4.1.1) 扫描标签,我会得到 NfcAdapter.ACTION_NDEF_DISCOVERED 和 NFCReaderActivity 直接启动。

如果我对 HTC X (Android 4.0.3) 执行相同操作,应用程序会启动,但我只是得到 android.intent.action.MAIN 等 NFCReaderActivity 没有出现,标签也没有被扫描。

这适用于三星 Nexus S,但不适用于 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>   

这是我的活动和过滤器。

有人出主意吗?


编辑:

这适用于 HTC,但不适用于三星 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>   

在这里我得到了以下异常@HTC - 也许这是我不知道的问题: 堆栈:

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!

也许问题是版本 4.1.1 和 4.0.3 - 我不知道: 事实是: 只有 Ndef 适用于三星,如果我添加

【问题讨论】:

  • 显而易见的问题:HTC X 的设置中是否启用了 NFC?
  • 是已启用。不知何故,htc 在没有 mimetype 数据标签的情况下对 ndef-dicovered 过滤器做出反应......如果我添加
  • 在 Logcat 中我可以看到 htc 向我显示此错误:startLaunchActivity get appname failed java.lang.NullPointerException at com.android.server.am.ActivityStack.startLaunchActivity(ActivityStack.java:4831) .. .
  • 发布完整的堆栈跟踪。不知道为什么它在 HTC 上不起作用,试试 mimeType="/"。
  • 您可以在上方的编辑下看到它:只有 Ndef 适用于三星,如果我添加

标签: android nfc intentfilter ndef android-applicationrecord


【解决方案1】:

有一个bug in Android 让AAR 基本上一文不值。根据手机状态,当 NFC 服务处理标签时,AAR 或意图过滤器优先。如果 AAR 获胜,您将无法获得标签。

您可以正确处理此问题的唯一方法是删除 AAR,将其替换为您控制的服务器的 URL,该服务器可以重定向到您在 Google Play 上的应用页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多