簡體   English   中英

如何使用HTML5在Nexus上獲取NFC標簽ID

[英]How to get NFC tag id on Nexus using HTML5

我正在構建一個讀取NFC標簽的HTML5應用程序。 它在台式機上運行,​​我使用閱讀器讀取NFC標簽。 我想在Nexus上運行此應用並從Nexus讀取NFC。...有人知道如何使Nexus讀取NFC標簽並將標簽ID放在文本框中嗎?

我們在Android和iOS SDK中使用此方法。 對於Android,您想要設置一個簡單的應用程序,該應用程序注冊NFC意圖ACTION_TAG_DISCOVERED ,然后將tag ID推入變量。 然后,您可以使用簡單的javascript注入方法將這些數據獲取到Webview中。 這是一個示例,從HTML頁面(index.html)開始:

<!doctype html>
<html>
<head>
    </head>
    <body>
        <center>
            <input class="input-text" name="UUID" id="UUID" value="empty">
        </center>
    </body>
</html>

Android版式(activity_main.xml):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:layout_gravity="center"
    android:orientation="vertical">

    <WebView 
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
        android:layout_weight=".5"
       android:id="@+id/webview" ></WebView>

</LinearLayout>

和Java代碼(MainAcitivity.java):

package com.authorwjf.javascriptinjection;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.annotation.SuppressLint;
import android.app.Activity;

public class MainActivity extends Activity implements OnClickListener {

    private static final String URL = "file:///android_asset/index.html";
    private static final String tagUUID = "empty";
    private WebView mWebView;

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWebView = (WebView) findViewById(R.id.webview); 
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.setWebChromeClient(new WebChromeClient());
        mWebView.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageFinished(WebView view, String url) {
                String javascript="javascript: document.getElementById('UUID').value="+tagUUID+";";
                view.loadUrl(javascript);
            }
        });

        IntentFilter mFilter = new IntentFilter(ACTION_TAG_DISCOVERED);
        BroadcastReceiver mScanReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String s = intent.getAction();
                if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(s)) {
                    Tag tag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
                    byte[] tagIDBytes = tag.getId();
                    String tagId = bytesToHexString(tagIDBytes);
                    MainActivity.this.PostToWebview(tagId);
                }
            }
        };

        registerReceiver(mScanReceiver, mFilter);
        refreshWebView();
    }

    public void PostToWebview(final String tagId) {
        tagUUID = tagId;
        refreshWebView();
    }

    private void refreshWebView() {
        mWebView.loadUrl(URL);
    }
}

我在編輯器中組裝了最后一塊而不進行測試,因此可能會有一些語法錯誤。 總體而言,它應該為您提供一切所需的一切,以使它們正常工作。 也可以使用移動NFC閱讀器在iOS上執行此操作。 它涉及更多,但是我們可以幫助您前進

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM