Capacitor 框架下解决One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be ...

背景

在适配我们星光 MES APP在手机端的时候,星光 APP启动报错:

vbnet 复制代码
Caused by: java.lang.SecurityException: com.sancaiwulian.starmes: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts

问题分析

这个问题是在 Android 14 版本以上才会出现,网上有讨论 stackoverflow.com/questions/7...

出现这个问题是我们星光 APP需要监听到扫码抢的事件通知,所以,我们采用了 capacitor-intents 这个插件。看它的源码:

java 复制代码
this.getContext().registerReceiver(receiverMap.get(callBackID), ifilt);

可以看到,它在注册监听的时候没有添加 RECEIVER_EXPORTED (表示可以监听其他 APP 的事件通知) 或 RECEIVER_NOT_EXPORTED (表示只能监听自己 APP 的事件通知)参数。

解决方法

看已经有人在自己的 fork 的仓库里修复了这个问题:

github.com/prathap-red...

但他没有发布最新的包,所以,你自己也用不了。

看来只能自己 fork 一份,重新发一个版本就好。@nantajs/capacitor-intents

使用的时候替换下原先的包(将包capacitor-android-intents替换为**@nanta/capacitor-intents**),其他都不需要变。

bash 复制代码
npm install @nanta/capacitor-intents
npx cap sync

www.npmjs.com/package/@na...

改动源码: github.com/nantajs/cap...

相关推荐
郁大锤18 分钟前
Android Studio 国内镜像使用与 SDK 下载速度优化指南
android·ide·android studio
那就摆吧1 小时前
数据结构-栈
android·java·c语言·数据结构
奔跑吧 android1 小时前
【android bluetooth 框架分析 02】【Module详解 4】【Btaa 模块介绍】
android·bluetooth·bt·aosp13·btaa
tangweiguo030519871 小时前
Android Compose Activity 页面跳转动画详解
android·compose
Yang-Never2 小时前
ADB -> pull指令拉取手机文件到电脑上
android·adb·android studio
Yang-Never2 小时前
ADB -> pull指令推送电脑文件到手机上
android·adb·android studio
李新_2 小时前
我们封装了哪些好用的Flutter Mixin
android·flutter
帅次2 小时前
Flutter Expanded 与 Flexible 详解
android·flutter·ios·小程序·webview
流浪汉kylin2 小时前
Android手机如何腾出存储空间
android
0wioiw03 小时前
Kotlin基础(①)
android·开发语言·kotlin