蛾儿雪柳黄金缕 2022-11-08 10:12 采纳率: 60%
浏览 11

安卓nfc过滤遇到问题

我在学习安卓nfc知识时过滤nfc卡的类型。获取到的总是android.intent.action.MAIN,请问我要如何修改
这是清单文件

        <activity
            android:name=".Beam"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.nfc.action.NDEF_DISCOVERED" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="text/plain" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.nfc.action.TECH_DISCOVERED" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.nfc.action.TAG_DISCOVERED" />
            </intent-filter>
            <meta-data
                android:name="android.nfc.action.TECH_DISCOVERED"
                android:resource="@xml/nfc_tech_filter" />
        </activity>

这是代码文件

 @Override
    protected void onResume() {
        super.onResume();
        //得到是否检测到ACTION_TECH_DISCOVERED触发
        if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(getIntent().getAction())) {
            //处理该intent
            System.out.println("这个是tech类型的nfc");
            Tag tag = getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG);
//            processIntent(getIntent());
//            onNewIntent(getIntent());
        }else if(NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
            System.out.println("这个是NDEF类型的nfc");
        }else if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(getIntent().getAction())){
            System.out.println("这个是tag类型的nfc");

        }else{
            Tag tag = getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG);
            System.out.println(getIntent().getAction());
            System.out.println(tag);
        }
    }

运行结果:

D/AppScoutStateMachine: 19985-ScoutStateMachinecreated
I/System.out: android.intent.action.MAIN
I/System.out: null

我想得到nfc类型然后读取,可是一直读取的是这个MAIN,怎么办

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-08 13:06
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 11月8日