当前位置: 首页 > news >正文

pc网站做成移动网站2021近期时事新闻热点事件

pc网站做成移动网站,2021近期时事新闻热点事件,软件开发专业就业,wordpress email模板前言 最近搞了个设备,需求是读取m1卡,厂家给了个安卓原生demo,接入arr插件如下,接入后发现还是少了一部分代码,设备服务调起后触发刷卡无法发送到uniapp里。 中间是一些踩坑记录,最后面是解决办法&#xf…

前言

最近搞了个设备,需求是读取m1卡,厂家给了个安卓原生demo,接入arr插件如下,接入后发现还是少了一部分代码,设备服务调起后触发刷卡无法发送到uniapp里。
中间是一些踩坑记录,最后面是解决办法,赶时间直接拉到最后

安卓原生广播

demo中的NfcService其中有一个onDataReceived方法,最终调用了LocalBroadcastManager 发送广播

protected void onDataReceived(final ComBean ComRecData) {Log.d(TAG, "发送消息!");LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(getApplicationContext());Intent intent = new Intent(NfcAction.ACTION_NOTIFY_CARD_NUMBER);intent.putExtra(NfcAction.KEY_NOTIFY_DECIMAL_CARD_NUMBER, decimal);intent.putExtra(NfcAction.KEY_NOTIFY_DECIMAL_REVERSE_CARD_NUMBER, decimalReverse);intent.putExtra(NfcAction.KEY_NOTIFY_ORIGINAL_CARD_NUMBER, originHex);intent.putExtra(NfcAction.KEY_NOTIFY_EIGHT_HEX_CARD_NUMBER, eightHex);intent.putExtra(NfcAction.KEY_NOTIFY_EIGHT_HEX_REVERSE_CARD_NUMBER, eightHexReverse);intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);localBroadcastManager.sendBroadcast(intent);Log.d(TAG, "发送消息成功!");
}

MainActivityonCreate里有接收广播

val nfcCardReceiver = NfcCardReceiver()
val intentFilter = IntentFilter()
intentFilter.addAction(NfcAction.ACTION_NOTIFY_CARD_NUMBER)
LocalBroadcastManager.getInstance(this).registerReceiver(nfcCardReceiver, intentFilter)

NfcCardReceiver

package com.rt.nfclibdemoimport android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.util.Log
import com.rt.lib_nfc.NfcAction
import org.greenrobot.eventbus.EventBusclass NfcCardReceiver: BroadcastReceiver() {override fun onReceive(p0: Context?, p1: Intent?) {if (p1 != null) {val card = p1.getStringExtra(NfcAction.KEY_NOTIFY_ORIGINAL_CARD_NUMBER)val card2 = p1.getStringExtra(NfcAction.KEY_NOTIFY_DECIMAL_CARD_NUMBER)val card3 = p1.getStringExtra(NfcAction.KEY_NOTIFY_DECIMAL_REVERSE_CARD_NUMBER)val card4 = p1.getStringExtra(NfcAction.KEY_NOTIFY_EIGHT_HEX_CARD_NUMBER)val card5 = p1.getStringExtra(NfcAction.KEY_NOTIFY_EIGHT_HEX_REVERSE_CARD_NUMBER)//跟ui绑定的东西,忽略掉EventBus.getDefault().post(CardBean(card!!, card2!!, card3!!, card4!!, card5!!))Log.e("TAG", "onReceive: " + card + "---" + card2 + "---" + card3 + "---" + card4 + "---" + card5)}}
}

根据以往的经验写出如下代码,结果是失败的

const mainActivity = plus.android.runtimeMainActivity();
const NfcAction = plus.android.importClass('com.rt.lib_nfc.NfcAction');
var nfcCardReceiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {onReceive: function(context, intent) { //实现onReceiver回调函数plus.android.importClass(intent);console.log('context, intent ->', context, intent);console.log('intent.getAction() ->', intent.getAction());}
const IntentFilter = plus.android.importClass('android.content.IntentFilter');
const filter = new IntentFilter();
filter.addAction(NfcAction.ACTION_NOTIFY_CARD_NUMBER); //监听
let LocalBroadcastManager = plus.android.importClass('androidx.localbroadcastmanager.content.LocalBroadcastManager');
let localBroadcastManager = LocalBroadcastManager.getInstance(mainActivity);
localBroadcastManager.registerReceiver(nfcCardReceiver, filter);

最终结果是控制台无输出,
adb shell catlog抓到的日志是个null
在这里插入图片描述找了很久很久后,找到了个栗子,据说绑定不成功的原因是io.dcloud.android.content.BroadcastReceiver这个东西是抽象类,无法实现,只能用io.dcloud.feature.internal.reflect.BroadcastReceiver然而替换后还是不行,就是无法监听LocalBroadcastManager,又找了很久资料,找了无数篇垃圾文章后,找了原生安卓的很多文章后,终于找到了个办法,不用LocalBroadcastManager使用另一种方法发送,接收广播

最终方案

不使用LocalBroadcastManager发生监听广播
使用getApplicationContext().sendBroadcast(intent);发送广播
使用mainActivity.registerReceiver(nfcCardReceiver, filter);监听广播
首先将NfcService->onDataReceived改造,在原有基础上增加,更改后记得重新打成arr,然后重打自定义基座才能生效

protected void onDataReceived(final ComBean ComRecData) {Log.d(TAG, "发送消息!");LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(getApplicationContext());Intent intent = new Intent(NfcAction.ACTION_NOTIFY_CARD_NUMBER);intent.putExtra(NfcAction.KEY_NOTIFY_DECIMAL_CARD_NUMBER, decimal);intent.putExtra(NfcAction.KEY_NOTIFY_DECIMAL_REVERSE_CARD_NUMBER, decimalReverse);intent.putExtra(NfcAction.KEY_NOTIFY_ORIGINAL_CARD_NUMBER, originHex);intent.putExtra(NfcAction.KEY_NOTIFY_EIGHT_HEX_CARD_NUMBER, eightHex);intent.putExtra(NfcAction.KEY_NOTIFY_EIGHT_HEX_REVERSE_CARD_NUMBER, eightHexReverse);intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);Log.d(TAG, "发送localBroadcastManager消息");//原来的发送广播语句//localBroadcastManager.sendBroadcast(intent);Log.d(TAG, "发送getApplicationContext消息");//新增的关键语句getApplicationContext().sendBroadcast(intent);Log.d(TAG, "发送消息成功!");
}

uniapp部分

registerReceiver(){const that = this;const Log = plus.android.importClass('android.util.Log');Log.d('NfcApp', '1');const mainActivity = plus.android.runtimeMainActivity();const NfcAction = plus.android.importClass('com.rt.lib_nfc.NfcAction');const nfcCardReceiverFunc = {  onReceive: function(context, intent) { //实现onReceiver回调函数  plus.android.importClass(intent);console.log('context, intent ->', context, intent);console.log('intent.getAction() ->', intent.getAction());console.log('回调成功!');that.cardData = {};let card1 = intent.getStringExtra(NfcAction.KEY_NOTIFY_ORIGINAL_CARD_NUMBER);let card2 = intent.getStringExtra(NfcAction.KEY_NOTIFY_DECIMAL_CARD_NUMBER);let card3 = intent.getStringExtra(NfcAction.KEY_NOTIFY_DECIMAL_REVERSE_CARD_NUMBER);let card4 = intent.getStringExtra(NfcAction.KEY_NOTIFY_EIGHT_HEX_CARD_NUMBER);let card5 = intent.getStringExtra(NfcAction.KEY_NOTIFY_EIGHT_HEX_REVERSE_CARD_NUMBER);console.log('返回数据->',card1, card2, card3, card4, card5);if(card1 == 'AABB0600000001060007'){return;}//最终返回的数据that.cardData = { card1, card2, card3, card4, card5 };}};const nfcCardReceiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', nfcCardReceiverFunc);const IntentFilter = plus.android.importClass('android.content.IntentFilter');const filter = new IntentFilter();Log.d('NfcApp', '2');filter.addAction(NfcAction.ACTION_NOTIFY_CARD_NUMBER); //监听Log.d('NfcApp', '3');let res = mainActivity.registerReceiver(nfcCardReceiver, filter);Log.d('NfcApp', '4');Log.d('NfcApp', '绑定成功???')//解除绑定,暂未实现//unregisterReceiver
},

重新打包,重新运行后即可接到this.cardData返回的值了

http://www.khdw.cn/news/915.html

相关文章:

  • 黄冈公司网站推广软件首选seo 推广怎么做
  • 家用电脑做网站能备案长沙市seo百度关键词
  • 鄂州网站建设报价百度客户端下载
  • 花钱让别人做的网站版权是谁的关键词优化步骤简短
  • 网站建设唯美谷网站河北网站seo地址
  • 自动生成logo厦门seo排名收费
  • 长沙点梦网站建设公司怎么样汕头seo排名收费
  • flashfxp上传了网站希爱力双效片骗局
  • 一级做a爰片香蕉视频网站超级seo外链工具
  • 温州网站建设得花多少钱网络媒体推广报价
  • windows下搭建wordpress网站产品怎么优化
  • 2015做啥网站致富网络销售模式有哪些
  • 外贸网站用什么空间打广告去哪个平台免费
  • 青岛网站设计皆挺青岛博采网络黄山seo
  • 制作软件网站搜索引擎哪个好
  • 厦门市政府网站群建设品牌推广软文200字
  • 怎么做彩票平台网站吗举一个网络营销的例子
  • 石狮做网站可以免费打广告的网站
  • 怎么做网站搜索引擎利于搜索网络推销
  • 网站后台制作教程网络推广方法有哪些
  • 做印刷品的素材网站如何免费自己创建网站
  • dw内部网站链接怎么做软文推广多少钱一篇
  • c web网站开发框架百度指数热度榜
  • 网站做https好处seo外链收录
  • 网站ui设计给用户提交什么十大免费网站推广平台
  • 汇算清缴在哪个网站上做快速排名优化推广排名
  • 软件公司网站东莞网站建设哪家公司好
  • 照片网站模板seo推广视频隐迅推专业
  • 专门做瓷砖的网站广州网站推广软件
  • 绵阳 网站 建设谷歌优化技巧