【问题标题】:Possibility for Fake NFC(Near Field Communication) Launch假NFC(近场通信)发射的可能性
【发布时间】:2012-04-27 07:56:07
【问题描述】:

我正在研究近场通信,以从 NFC 标签读取数据。 我没有支持 NFC 的 Android Mobile 和 NFC 标签来测试我创建的应用程序。

我想知道是否可以通过意图过滤器启动我的应用程序(应该假设从我的设备检测到 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>

我的活动片段:

@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);
    }
}

【问题讨论】:

    标签: android android-activity android-intent nfc


    【解决方案1】:

    我可能完全错过了这里的重点,但据我了解,您基本上想触发一个意图,该意图将被您在清单中声明的​​接收器选择,对吗?您是否尝试过使用sendBroadcast(...) 方法设置一个非常 完全执行此操作的简单测试应用程序?

    Intent exampleIntent = new Intent("android.nfc.action.NDEF_DISCOVERED");
    sendBroadcast(exampleIntent)
    

    您可以根据自己的要求向Intent 添加任何额外的数据。

    【讨论】:

      【解决方案2】:

      在对 NFC 进行一些研究后,我发现我们可以在没有启用 NFC 的设备的情况下读取/写入 NFC 标签。但答案很简单。不过是在玩 Intents:

      我们必须调用这个 sn-p 来调用 NFC:

          final Intent intent = new Intent(NfcAdapter.ACTION_TAG_DISCOVERED);
          intent.putExtra(NfcAdapter.EXTRA_NDEF_MESSAGES, "Custom Messages");
          startActivity(intent);
      

      我们还应该通过 Manifest 文件将我们的 Activity 注册到 Android 系统,如下所示:

      Manifest.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>
      

      如果您有多个 Activity 使用相同的操作,我们将获得选择器,我们可以从中启动我们想要的 Activity。

      在 Activity 内部接收:

      TagViewer .java

          if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(getIntent().getAction())) {
              Log.v("NFC Launched","NFC Launched");           
          }
      

      我们在Developer Sample Demo 中有这个样本。

      【讨论】:

        【解决方案3】:

        看看开放式 NFC。他们有一个NFC simulator,可能对附加到你的安卓模拟器很有用。从未在 Android 上使用过它,但我在 BlackBerry 模拟器上使用过它。

        编辑:
        Last version 4.4.1 for Android ICS released.

        【讨论】:

        • 这个解决方案已经不存在了。
        猜你喜欢
        • 2014-05-19
        • 2011-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多