[React Native] – One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn’t being registered exclusively for system broadcasts

Lỗi này bị khi đưa lên android 14. Mình dùng 1 thư viện khá cũ là react-native-music-control. Vì ở Google I/O 2023 RECEIVER_EXPORTED / RECEIVER_NOT_EXPORTED đã được giới thiệu như một phần của Android 13 và hiện là yêu cầu bắt buộc đối với các ứng dụng chạy trên Android 14 về sau.

Cách giải quyết:

  • Vào trong node_modules của thư viện đó.
  • Tìm những chỗ dùng hàm registerReceiver và sửa như sau
context.registerReceiver(receiver, filter);

sửa thành

if (Build.VERSION.SDK_INT >= 34 && appCtx.getApplicationInfo().targetSdkVersion >= 34) {
    context.registerReceiver(receiver, filter, Context.RECEIVER_EXPORTED);
}else{
    context.registerReceiver(receiver, filter);
}

Leave a Reply

Your email address will not be published. Required fields are marked *