Ven*_*nky 5 android nfc android-intent android-activity
我正致力于近场通信,用于从NFC标签读取数据.我没有支持NFC的Android Mobile和NFC Tags来测试我创建的应用程序.
我想知道是否可以通过意图过滤器启动我的应用程序(应该假设从我的设备检测到NFC标签)
我的清单片段:
<activity
android:name=".ServerActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="abc.com"
android:pathPrefix="/aaap"
android:scheme="http" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
我的活动片段:
@Override
protected void onNewIntent(Intent intent) {
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
Toast.makeText(getApplicationContext(), "ACTION_TAG_DISCOVERED",
Toast.LENGTH_LONG);
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
}
}
Run Code Online (Sandbox Code Playgroud)
经过对 NFC 的一些研究,我发现我们可以在没有支持 NFC 的设备的情况下读取/写入 NFC 标签。但答案很简单。只不过是玩 Intents 而已:
我们必须调用此代码片段来调用 NFC :
final Intent intent = new Intent(NfcAdapter.ACTION_TAG_DISCOVERED);
intent.putExtra(NfcAdapter.EXTRA_NDEF_MESSAGES, "Custom Messages");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
另外,我们应该通过 Manifest 文件将 Activity 注册到 Android 系统,如下所示:
清单.xml
<activity
android:name="TagViewer" >
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
同样,如果您有多个活动使用相同的操作,我们将获得选择器,从中我们可以启动所需的活动。
接收内部活动:
标签查看器.java
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(getIntent().getAction())) {
Log.v("NFC Launched","NFC Launched");
}
Run Code Online (Sandbox Code Playgroud)
我们在开发人员示例演示中提供了此示例。
| 归档时间: |
|
| 查看次数: |
1679 次 |
| 最近记录: |