就让爱去蔓延 2023-01-08 13:07 采纳率: 100%
浏览 44
已结题

vue+uniapp nfc识别

问题遇到的现象和发生背景

uni app 使用nfc识别功能

遇到的现象和发生背景,请写出第一个错误信息

在自己的app识别出nfc卡内信息时 手机自己本身的nfc识别app也被调用 导致自己的app返回首页直接刷新 重载

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
/* js*/
nfcRuning: function(resolve) {
        // console.log("--------------nfcRuning---------------")
        NdefRecord = plus.android.importClass("android.nfc.NdefRecord");
        NdefMessage = plus.android.importClass("android.nfc.NdefMessage");
        let main = plus.android.runtimeMainActivity();
        let intent = main.getIntent();
        let action = intent.getAction();
        let that = this;
        if (package_TECH_DISCOVERED == action) {
            if (readyRead) {
                //这里通过read方法拿到NFC数据
                const type = that.read(intent);
                // readyRead = false;
                //将数据返回出去
                resolve(type)
            }
        }
    }
    read(intent) {
        // toast('请勿移开标签正在读取数据');
        let that = this;
        // NFC id
        let code_type = '';
        let bytesId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
        let nfc_id = that.byteArrayToHexString(bytesId);
        let Parcelable = plus.android.importClass("android.os.Parcelable");
        let rawmsgs = intent.getParcelableArrayExtra("android.nfc.extra.NDEF_MESSAGES");
        if (rawmsgs != null && rawmsgs.length > 0) {
            let records = rawmsgs[0].getRecords();
            let result = records[0].getPayload();
            let data = plus.android.newObject("java.lang.String", result);
            code_type = data;
        } else {
            code_type = '暂无数据'
        }
        return code_type;
    },

/*vue*/
async testNFC() {
    console.log(111111)
     //这里用异步获取读取到的NFC数据
     this.nfc_type = await nfcFun.listenNFCStatus();
    console.log(this.nfc_type)
},
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

能否阻止跳转

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

1条回答 默认 最新

  • m0_54204465 2023-01-08 13:58
    关注

    看起来你是在使用 Android 的 NFC 功能,并希望在识别到 NFC 卡片时阻止手机自带的 NFC 识别应用被调用。

    如果要阻止手机自带的 NFC 识别应用被调用,你可以尝试在你的应用的 AndroidManifest.xml 文件中声明 android.nfc.action.NDEF_DISCOVERED 的 intent filter,并设置 android:priority 属性的值为最高。这样,你的应用就可以在识别到 NFC 卡片时优先响应该 intent,从而阻止手机自带的 NFC 识别应用被调用。

    具体实现方法如下:

    
    <activity
        android:name=".MainActivity"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan">
        <intent-filter>
            <action
    

    在 AndroidManifest.xml 文件中声明 android.nfc.action.NDEF_DISCOVERED 的 intent filter,并设置 android:priority 属性的值为最高。

    <activity
        android:name=".MainActivity"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan">
        <intent-filter android:priority="1000">
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="text/plain" />
        </intent-filter>
    </activity>
    
    

    在你的应用中处理 android.nfc.action.NDEF_DISCOVERED intent。
    当你的应用接收到 android.nfc.action.NDEF_DISCOVERED intent 时,你可以使用 getParcelableArrayExtra() 方法从 intent 中获取 NFC 数据,然后解析该数据并做出相应的处理。

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        if (intent.getAction().equals(NfcAdapter.ACTION_NDEF_DISCOVERED)) {
            // 获取 NFC 数据
            Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
            if (rawMsgs != null) {
                // 解析 NFC 数
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月8日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!