隔壁老王lolo 2024-11-28 18:58 采纳率: 0%
浏览 331

Android14版本适配问题

升级Android14后广播报错:
One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
按照搜出来的处理办法在registerReceiver方法补上第三个参数RECEIVER_EXPORTED(Context.RECEIVER_EXPORTED)
但是补上之后出现错误:

img


鼠标划上去提示:
Must be one or more of: Context. RECEIVER_VISIBLE_TO_INSTANT_APPS, android. content. Context. RECEIVER_EXPORTED, android. content. Context. RECEIVER_NOT_EXPORTED
让换成 Context.RECEIVER_VISIBLE_TO_INSTANT_APPS 。换完是没问题了,但是app还是进不去闪退。
求指教

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从您提供的信息来看,您似乎在更新到Android 14版本后遇到了广播接收器(BroadcastReceiver)的问题。在Android开发中,注册广播接收器时需要遵循一些规则,尤其是在安全性方面。对于Android 14或更高版本,广播接收器的注册变得更加严格。

    关于您提到的错误信息和提示,这里有一些建议:

    1. 关于“Must be one or more of: Context.RECEIVER_VISIBLE_TO_INSTANT_APPS”: 这个提示似乎是关于广播接收器的可见性设置。确保您的广播接收器在注册时设置了正确的可见性标志。如果您想让您的广播接收器对即时应用可见,那么应该使用Context.RECEIVER_VISIBLE_TO_INSTANT_APPS。但请注意,这可能会增加应用的权限暴露风险。
    2. 关于“One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified”: 这个错误是在提醒您,当您的广播接收器不是专门为系统广播注册时,需要指定RECEIVER_EXPORTEDRECEIVER_NOT_EXPORTED其中之一。这意味着您的广播接收器是否可以被其他应用访问。如果您的广播接收器是为系统广播设计的并且不希望被其他应用访问,那么应该使用RECEIVER_NOT_EXPORTED。反之,如果希望被其他应用访问,则使用RECEIVER_EXPORTED
    3. 关于registerReceiver方法的参数: 在调用registerReceiver方法时,确保第三个参数是正确的。根据您提供的图,似乎第三个参数有一些乱码或不清晰。请确保它是一个有效的标志(如Context.RECEIVER_EXPORTEDContext.RECEIVER_NOT_EXPORTED)。

    针对您的具体问题,建议的解决步骤是:

    • 检查并确保广播接收器的注册方式正确,包括可见性和导出设置。
    • 确保您在调用registerReceiver方法时使用了正确的参数。
    • 如果仍然存在问题,建议检查您的代码中的其他部分,确保没有其他与Android 14版本不兼容的地方。
    • 最后,可以考虑查看Android开发者文档或相关社区,看看是否有其他开发者遇到类似问题并提供了解决方案。

    希望这些建议能帮助您解决问题!

    评论

报告相同问题?

问题事件

  • 创建了问题 11月28日