我是NFC新手.我尝试连接到NFC并将文本数据从设备共享到另一台设备.
我在两台设备和一台设备上安装我的应用程序,打开我的应用程序,然后开始将设备点击到另一台设备,以便通过Beam传输数据.
在另一台设备上,由于Beam交互,我的应用程序打开.但是,活动是使用默认的MAIN意图操作启动的,而不是使用TAG_DISCOVERED(或类似的NFC意图)启动的.每次它做同样的事情.
此外,它没有调用该onNewIntent()方法.我试图打电话onNewIntent给onCreate,但在那种情况下,意图行动仍然是主要的.我希望能够获得Beam交互的NFC意图.那么请你告诉我哪里出错了?
在这段代码中,我没有共享数据.我首先需要标签.
表现:
<activity android:name="com.framentos.hellonfc.MainActivity"
android:clearTaskOnLaunch="true"
android:label="@string/app_name"
android:launchMode="singleTop"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
</activity>
Run Code Online (Sandbox Code Playgroud)
Java代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ctx = this;
// startHandler();
_handler = new Handler();
Button btnWrite = (Button) findViewById(R.id.button);
message …Run Code Online (Sandbox Code Playgroud) 根据此答案,并通过测试验证,当您使用Android Beam推送包含AAR记录的NFC消息时,接收设备将启动AAR中指定的应用程序的MAIN/ LAUNCHERactivity.
那MAIN/ LAUNCHER Intent不包含NfcAdapter.EXTRA_NDEF_MESSAGES额外的.因此,如果您使用AAR,我们遇到的所有麻烦的数据都会丢失.
有没有办法在这种情况下获取触发应用程序的NFC消息?
如果答案是"否",那么AAR的用例是什么?当接收设备上不存在所需的应用程序(启动Play商店)时,我可以看到它可能会有所帮助,但是一旦安装了应用程序,AAR就会阻止任何将数据从一个设备传送到另一个设备的尝试,这是有点像NFC的背后.
谢谢!
我正在研究NFC应用程序.要启动我的应用程序,我正在使用带有AAR NDEF记录的NDEF标记.
这很好用.但现在我想直接用app阅读标签内容.我怎样才能做到这一点?
(它已经有效,当我从手机中取出标签并再次触摸它时,但我想取消这一步.)
表现:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nfctagscanner.mobileapps.lt.nfctagscanner" >
<uses-feature android:name="android.hardware.nfc" android:required="true"/>
<uses-permission android:name="android.permission.NFC" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".NFCScanActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="nfctagscanner.mobileapps.lt.nfctagscanner" android:host="ext"
android:pathPrefix="/android.com:pkg" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
而我只想获得NDEF_DISCOVERED意图.但我总是得到action.MAIN/category.LAUNCHER意图与我的调试器.
任何帮助将不胜感激.我基于此做了我的工作:Android/NFC:在没有新Intent的情况下在onCreate()中获取标签
我想使用NFC标签启动应用程序.我使用Android应用程序记录(AAR)使用Android应用程序记录(AAR),使用NFC标签启动Android应用程序,使用额外数据或使用NDEF_DISCOVERED/ TECH_DISCOVEREDintent过滤器.但是,在通过NFC事件启动时,如何将NFC标签(例如某些文本)中的数据传递给我的活动?
我已经阅读了NFC基础知识,但据我所知,它似乎想要实现一种读取标签的机制,当我真的不想在标签打开应用程序后重新读取标签,但是相反,我只想要同时传入的数据.
此外,这些机制似乎允许应用程序在标记启动后读取标记.换句话说,我担心如果有人在应用程序打开后再点击标签,那么标签将再次被读取(这是我不想要的).
其次,我如何创建这样的NDEF消息?
如果使用Android应用程序记录(AAR),则意图操作是
android.intent.action.MAIN
Run Code Online (Sandbox Code Playgroud)
所以我不知道这是正常发射还是nfc发射.
无论活动是正常启动还是在读取nfc标签之后,我都需要在活动中做一些不同的事情.如果手机上有另一个具有相同意图过滤器的应用程序,我也不想显示选择应用程序的提示,例如:
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud) 基于Android NFC doc提供的此文档:
如果标记包含AAR,则标记调度系统将按以下方式调度:
尝试使用意图过滤器正常启动活动.如果与意图匹配的活动也与AAR匹配,则启动活动.
如果为intent过滤的Activity与AAR不匹配,如果多个Activities可以处理intent,或者没有Activity处理intent,请启动AAR指定的应用程序.
如果没有应用程序可以从AAR开始,请转到Google Play以根据AAR下载应用程序.
从这些方面我明白,如果我为活动指定了一个intent过滤器,A并且收到的NDEF消息与过滤器匹配A,A即使NDEF消息包含A属于的app的AAR记录,也会启动.
在我的情况下,A只有在没有AAR记录时才开始.一旦我添加AAR记录,活动A就不会启动:当检测到NDEF消息时,将启动AAR中指示的应用程序的主要活动.
" 如果活动[...]也与AAR相匹配 ",它们意味着什么?
有没有人可以提供提示?