三星Nexus S VS HTC - NFC意图过滤器+ AAR [英] Samsung Nexus S vs HTC - NFC Intent Filter + AAR

查看:345
本文介绍了三星Nexus S VS HTC - NFC意图过滤器+ AAR的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我保存在我的NFC的标签的AAR。
如果我扫描与Nexus S(的Andr​​oid 4.1.1)的标签,我得到的
NfcAdapter.ACTION_NDEF_DISCOVERED和NFCReaderActivity直接启动。

如果我这样做与HTC X(的Andr​​oid 4.0.3)一样,应用程序启动,但我刚刚得到的
android.intent.action.MAIN等等NFCReaderActivity没有显示出来,并且标签未扫描。

这适用于三星Nexus S,但不是在HTC:

 <活动机器人:名字=。activities.NFCWriterActivity>< /活性GT;
<活动机器人:名字=。activities.NFCReaderActivity>
        &所述;意图滤光器>
          <作用机器人:名字=android.nfc.action.NDEF_DISCOVERED/>
          <类机器人:名字=android.intent.category.DEFAULT/>
        &所述; /意图滤光器>
< /活性GT;
<活动机器人:名字=。activities.NFCBeamActivity>
< /活性GT;
<活动机器人:名字=。activities.WifiManagerActivity>< /活性GT;
<活动机器人:名字=。activities.WifiConfiguratorActivity>< /活性GT;
<活动机器人:名字=。activities.TagWriterOptionsActivity>< /活性GT;
<活动机器人:名字=。activities.WifiScannerTagActivity>< /活性GT;
<活动机器人:名字=。activities.WifiScannerActivity>< /活性GT;
<活动机器人:名字=。activities.WifiListActivity>< /活性GT;

这是我的活动和过滤器。

有人的想法?


编辑:

这适用于HTC,但不是在三星Nexus S:

 <活动机器人:名字=。activities.NFCWriterActivity>< /活性GT;
<活动机器人:名字=。activities.NFCReaderActivity>
        &所述;意图滤光器>
          <作用机器人:名字=android.nfc.action.NDEF_DISCOVERED/>
          <类机器人:名字=android.intent.category.DEFAULT/>
          <数据机器人:mime类型=应用/ vnd.wfa.wsc/>
        &所述; /意图滤光器>
< /活性GT;
<活动机器人:名字=。activities.NFCBeamActivity>< /活性GT;
<活动机器人:名字=。activities.WifiManagerActivity>< /活性GT;
<活动机器人:名字=。activities.WifiConfiguratorActivity>< /活性GT;
<活动机器人:名字=。activities.TagWriterOptionsActivity>< /活性GT;
<活动机器人:名字=。activities.WifiScannerTagActivity>< /活性GT;
<活动机器人:名字=。activities.WifiScannerActivity>< /活性GT;
<活动机器人:名字=。activities.WifiListActivity>< /活性GT;

下面我得到了以下异常@ HTC - 也许这就是我don'tknow的问题:
堆栈:

  D / AudioTrack(3938):停止0x1601940
D / AudioFlinger(142):从3938释放231
D / AudioTrack(3938):AudioTrack析构函数点¯x
D /功率(277):已锁定性能。
W / CpuWake(277):>> acquireCpuPerfWakeLock!
W / CpuWake(277):其中;&下; acquireCpuPerfWakeLock!
E / ActivityManager(277):startLaunchActivity得到APPNAME失败
E / ActivityManager(277):显示java.lang.NullPointerException
E / ActivityManager(277):在com.android.server.am.ActivityStack.startLaunchActivity(ActivityStack.java:4831)
E / ActivityManager(277):在com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:3352)
E / ActivityManager(277):在com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:2509)
E / ActivityManager(277):在android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:131)
E / ActivityManager(277):在com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1751)
E / ActivityManager(277):在android.os.Binder.execTransact(Binder.java:338)
E / ActivityManager(277):在dalvik.system.NativeStart.run(本机方法)
I / ActivityManager(277):开始行动{= android.nfc.action.NDEF_DISCOVERED典型值=应用程序/ vnd.wfa.wsc PKG = at.nfc.wifi(有临时演员)}从PID 3938
W / ActivityManager(277):为重复{ActivityRecord 41163a90 com.android.nfc / .NfcRootActivity}结束请求
D /功率(277):已锁定性能。
I /意图(277):@ TEST_ code:getHtcIntentFlag:0 OBJ:1094379848
W / CpuWake(277):>> acquireCpuPerfWakeLock!
W / CpuWake(277):其中;&下; acquireCpuPerfWakeLock!


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

解决方案

有一个的臭虫的Andr​​oid 使AAR基本上毫无价值。根据手机状态,无论是AAR或意图过滤器正在precedence当NFC服务正在处理的标记。如果AAR赢了,你得到的标记没有办法。

您可以妥善处理这个问题的唯一方法是删除了AAR,用URL来自己控制的服务器,可以重定向到您的应用页面在谷歌播放取代它。

I save the AAR on my NFC-Tag. If I scan the TAG with the Nexus S (Android 4.1.1), i get the NfcAdapter.ACTION_NDEF_DISCOVERED and the NFCReaderActivity directly starts.

If I do the same with the HTC X (Android 4.0.3), the application starts but I just get the android.intent.action.MAIN and so the NFCReaderActivity doesn't show up and the Tag isn't scanned.

This works on Samsung Nexus S but not on 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>   

This are my activities and filters.

Someone an idea?


Edit:

This works on HTC but not on 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>   

Here I got the following Exception @ HTC - maybe this is the Problem i don'tknow: Stack:

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!


Maybe the Problem is the version 4.1.1 vs 4.0.3 - I don't know: Fact is: Only Ndef works on Samsung, If i add the

解决方案

There is a bug in Android that makes AAR basically worthless. Depending on the phone state, either the AAR or the intent filter is taking precedence when the NFC service is handling the tag. If the AAR wins, you have no means of obtaining the tag.

The only way you can handle this properly is to remove the AAR, replacing it with a URL to a server you control, that can redirect to your app page on Google Play.

这篇关于三星Nexus S VS HTC - NFC意图过滤器+ AAR的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆