0

タグNFCをURLで読み取り、URLをTextViewに書き込む単純なアプリケーションを実行しようとしています。私はそれを実行しようとしましたが、うまくいきませんでした。誰かがそれで私を助けることができますか? コードは次のとおりで、AndroidManifest もあります。あなたが私を助けてくれることを願っています。


/ * ****メイン クラス* ** * *** /

public class MainActivity extends Activity {
    private TextView mCardView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // ImageView that we'll use to display cards
        mCardView = (TextView) findViewById(R.id.result);

        Parcelable[] rawMsgs = getIntent().getParcelableArrayExtra(
                NfcAdapter.EXTRA_NDEF_MESSAGES);
        NdefMessage msg = (NdefMessage) rawMsgs[0];
        NdefRecord cardRecord = msg.getRecords()[0];
        String val = new String(cardRecord.getPayload());
        displayCard(val);
    }

    private void displayCard(String val) {
        mCardView.setText(val);
    }
}


/ * ** * ** * ** * ** * * /


/ * *** Android マニフェスト* ** * * /

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.readnfc"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="14" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" android:debuggable="true">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >

            <!-- Handle a collectable card NDEF record -->
            <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />

                <category android:name="android.intent.category.DEFAULT" />

                <data
                    android:host="developer.android.com"
                    android:pathPrefix="/index.html"
                    android:scheme="http" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />

                <data android:mimeType="text/plain" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>


/ * ** * ** * ** * ** * * /

あなたの時間をタンクに入れます。

敬具、リタ

4

3 に答える 3

1

Parcelable 配列を取得したら、このように繰り返して読み取りを試みます。問題が解決する可能性があります。

        Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
        if (rawMsgs != null) {
            messages = new NdefMessage[rawMsgs.length];
            for (int i = 0; i < rawMsgs.length; i++) {
                messages[i] = (NdefMessage) rawMsgs[i];
            }
        }
        if(messages[0] != null) {
            String result="";
            byte[] payload = messages[0].getRecords()[0].getPayload();
            for (int b = 1; b<payload.length; b++) {
                result += (char) payload[b];
            }
            Toast.makeText(getApplicationContext(), "Tag Contains " + result, Toast.LENGTH_SHORT).show();
        }
于 2012-08-08T07:55:44.630 に答える
0
            textView.setText(new String(ndefMessage.getRecords()[1].getPayload()));
于 2016-03-09T06:13:18.140 に答える
0

結果は、cardRecord.getPayload()バイナリ データを含むバイト配列になります。URL の一部はストレージ スペースを節約するために圧縮されているため、このデータを単純に URL に変換することはできません。ペイロードの最初のバイトは、URL の一般的なプレフィックス (「http://www.」や「https://」など) をエンコードするため、個別にデコードする必要があります。完全なリストについては、 NFC URI RTD 技術仕様を参照してください。自分で簡単に実装するか、https: //github.com/grundid/nfctools の NDEF デコード クラスを使用して試してみることができます。

于 2012-08-06T19:37:32.240 に答える