【问题标题】:Two actions on one NFC tag对一个 NFC 标签执行两个操作
【发布时间】:2013-10-16 11:40:05
【问题描述】:

我想知道是否可以执行以下操作;

我想要一个与我正在开发的 Android 应用程序结合使用的 nfc 标签。

如果我滑动标签并且我的应用程序安装在手机上,我想从标签中读取纯文本数据。 999 以内的数字没什么特别的。

但是如果我的应用程序没有安装,我希望标签打开网络浏览器并重定向到他们可以下载的链接?

这可能与 android 读取意图的方式有关吗?

根据我的理解(我不是 nfc 专业人士)你只能做其中之一?

还是我错了?

编辑:

有没有办法在不加载应用商店的情况下做到这一点?这是一个大学项目,如果我将项目公开,我认为他们不会高兴。我希望把他们带到一个可以下载.apk的链接

【问题讨论】:

    标签: android nfc ndef


    【解决方案1】:

    如果要求避免使用 Play 商店,您可以在标签上存储包含两条记录的 NDEF 消息:第一条记录包含应用下载页面的 URL。第二条记录包含纯文本数据。 (事实上​​,您甚至可以将数据编码到 URL 中,因此只使用一个 URI 记录。)

    +----------------------------------------------+-- ----------------+ | URI 记录:http://www.zapnologica.com/myapp |文字记录:nnn | +----------------------------------------------+-- ----------------+

    如果您的应用程序未安装,应用程序的下载页面(此处为:http://www.zapnologica.com/myapp)将在用户的网络浏览器中打开。

    为了在标签扫描时自动启动您的应用,您的应用需要为下载 URL 定义一个意图过滤器:

    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="http"
              android:host="www.zapnologica.com"
              android:pathPrefix="/myapp" />
    </intent-filter>
    

    然后,在您的应用程序中,您可以从标签中读取整个 NDEF 消息(实际上,NDEF 消息将在 Intent extra EXTRA_NDEF_MESSAGES 自动提供给您的应用程序):

    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
        Parcelable[] rawMsgs = Intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
        if (rawMsgs != null) {
            msgs = new NdefMessage[rawMsgs.length];
            for (int i = 0; i < rawMsgs.length; i++) {
                msgs[i] = (NdefMessage) rawMsgs[i];
            }
        }
    }
    

    因此,msg[0].getRecords() 将返回两条记录——URI 记录和文本记录。

    【讨论】:

      【解决方案2】:

      我认为这就是您要寻找的:

      Tutorial NFC.

      如果没有我们的应用程序的用户触摸标签,它将使用内置机制将他们带到 Android Play 商店中的应用程序下载页面。安装后,任何后续点击都将启动应用程序并在屏幕上显示游戏卡。

      【讨论】:

      • 有没有办法在不加载应用商店的情况下做到这一点?这是一个大学项目,如果我将项目公开,我认为他们不会高兴。我希望把他们带到一个可以下载.apk的链接
      • @Zapnologica 您可以在不公开的情况下将 apk 放在 Play 商店中。我的意思是,您可以在 google+ 中创建一个用户社区并与他们共享应用程序。我认为这样会更容易、更干净。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      相关资源
      最近更新 更多