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...

相关推荐
三少爷的鞋8 小时前
AI 时代,我们都将成为通才型开发者:只懂 Android,已经不够了
android
Dovis(誓平步青云)11 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
晚风叙码13 小时前
MySQL 数据类型详解:从数值到字符串,一篇讲透
android·mysql·adb
传奇开心果编程14 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程16 小时前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer
传奇开心果编程18 小时前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
传奇开心果编程18 小时前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程18 小时前
【Compose Multiplatform 跨端开发学与练】第6课 状态管理与架构
android·学习·ui·ios·架构·kotlin·composer
事圆则缓18 小时前
Android AOSP 定制常见概念:源码目录、系统镜像与刷机流程
android
传奇开心果编程18 小时前
【Compose Multiplatform 跨端开发学与练】第2课 Compose 基础语法
android·windows·学习·ui·ios·kotlin·composer