cordova-sms / cordova-sms-plugin

Cross-platform plugin for Cordova / PhoneGap to send SMS. Available for Android, iOS, and Windows Phone 8.
MIT License
251 stars 165 forks source link

App Crash when SMS sent / Android 14 target #232

Closed lajith111 closed 2 months ago

lajith111 commented 3 months ago

The App crash after upgrading to ionic 8/capacitor6 with target Android 14.0 .

This logicat for FC

2024-07-06 14:43:00.434 31410-31410 Capacitor/Plugin        corepi.in                         V  To native (Capacitor plugin): callbackId: 126798804, pluginId: Haptics, methodName: selectionStart
2024-07-06 14:43:00.435 31410-31410 Capacitor               corepi.in                         V  callback: 126798804, pluginId: Haptics, methodName: selectionStart, methodData: {}
2024-07-06 14:43:00.444 31410-31410 Capacitor/Console       corepi.in                         I  File:  - Line 350 - Msg: undefined
2024-07-06 14:43:00.482 31410-31430 EGL_emulation           corepi.in                         D  app_time_stats: avg=871.75ms min=14.56ms max=11654.72ms count=14
2024-07-06 14:43:00.582 31410-31410 Capacitor/Plugin        corepi.in                         V  To native (Capacitor plugin): callbackId: 126798805, pluginId: Haptics, methodName: selectionEnd
2024-07-06 14:43:00.583 31410-31410 Capacitor               corepi.in                         V  callback: 126798805, pluginId: Haptics, methodName: selectionEnd, methodData: {}
2024-07-06 14:43:00.682 31410-31410 Capacitor/Console       corepi.in                         I  File:  - Line 350 - Msg: undefined
2024-07-06 14:43:01.484 31410-31430 EGL_emulation           corepi.in                         D  app_time_stats: avg=30.36ms min=9.19ms max=168.97ms count=31
2024-07-06 14:43:02.063 31410-31410 Capacitor/Plugin        corepi.in                         V  To native (Cordova plugin): callbackId: Permissions1823810140, service: Permissions, action: checkPermission, actionArgs: ["android.permission.SEND_SMS"]
2024-07-06 14:43:02.072 31410-31410 Capacitor/Plugin        corepi.in                         V  To native (Cordova plugin): callbackId: Sms1823810141, service: Sms, action: send, actionArgs: [["98XXXXX710"],"Samaja Seva S S,Demo\nNo: ...2304000134\nUMMAR SHAFFI...\nOPD:16\/04\/2015\nOPB:1510.00\nColxn:50.00\nCLB:1560.00\nLoan:NIL\n06\/07\/2024 14:42\n","",true]
2024-07-06 14:43:02.149 31410-32001 AndroidRuntime          corepi.in                         E  FATAL EXCEPTION: pool-2-thread-2
                                                                                                    Process: corepi.in, PID: 31410
                                                                                                    java.lang.SecurityException: corepi.in: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
                                                                                                        at android.os.Parcel.createExceptionOrNull(Parcel.java:3057)
                                                                                                        at android.os.Parcel.createException(Parcel.java:3041)
                                                                                                        at android.os.Parcel.readException(Parcel.java:3024)
                                                                                                        at android.os.Parcel.readException(Parcel.java:2966)
                                                                                                        at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:5684)
                                                                                                        at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1852)
                                                                                                        at android.app.ContextImpl.registerReceiver(ContextImpl.java:1792)
                                                                                                        at android.app.ContextImpl.registerReceiver(ContextImpl.java:1780)
                                                                                                        at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:755)
                                                                                                        at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:755)
                                                                                                        at com.cordova.plugins.sms.Sms.send(Sms.java:197)
                                                                                                        at com.cordova.plugins.sms.Sms.-$$Nest$msend(Unknown Source:0)
                                                                                                        at com.cordova.plugins.sms.Sms$1.run(Sms.java:120)
                                                                                                        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
                                                                                                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
                                                                                                        at java.lang.Thread.run(Thread.java:1012)
                                                                                                    Caused by: android.os.RemoteException: Remote stack trace:
                                                                                                        at com.android.server.am.ActivityManagerService.registerReceiverWithFeature(ActivityManagerService.java:13927)
                                                                                                        at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2570)
                                                                                                        at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2720)
                                                                                                        at android.os.Binder.execTransactInternal(Binder.java:1339)
                                                                                                        at android.os.Binder.execTransact(Binder.java:1275)
2024-07-06 14:43:02.197 31410-31410 Capacitor/Console       corepi.in                         I  File: https://localhost/chunk-DW7ONGH5.js - Line 1 - Msg: Has permission? true
2024-07-06 14:43:02.204 31410-32001 corepi.in            corepi.in                         W  Attempt to remove non-JNI local reference
2024-07-06 14:43:02.266 31410-32001 Process                 corepi.in                         I  Sending signal. PID: 31410 SIG: 9
---------------------------- PROCESS ENDED (31410) for package corepi.in ----------------------------
lajith111 commented 3 months ago

Code I am using to send sms

   // CONFIGURATION
          const options = {
              replaceLineBreaks: true, // true to replace \n by a new line, false by default
              android: {
                  intent: ''   // send SMS without opening any other app
              }
          };

        await  this.sms.send(mobile, message, options);

After Searching i got ..https://stackoverflow.com/questions/77235063/one-of-receiver-exported-or-receiver-not-exported-should-be-specified-when-a-rec

lajith111 commented 3 months ago

@dbaq please update package

@RodinHaker is there any alternate solution please let me know

Tried below code as per https://github.com/NordicSemiconductor/Android-DFU-Library/pull/413/files#diff-32b5372bb321f1487e70ff9bca6679bd1ae1ceb38ac3445db5b274d6ce4ef6ce

register broadcast reciever but lot of syntax error I am front end dev so ```

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
      this.cordova.getActivity().registerReceiver(broadcastReceiver, new IntentFilter(intentFilterAction),Context.RECEIVER_NOT_EXPORTED);
    } else
      this.cordova.getActivity().registerReceiver(broadcastReceiver, new IntentFilter(intentFilterAction));
    }
dbaq commented 2 months ago

@lajith111 please open a PR and Ill update the package

lajith111 commented 2 months ago

I opened PR please update

dbaq commented 2 months ago

@lajith111 thank you for your contribution! Version 1.0.4 has been released: https://www.npmjs.com/package/cordova-sms-plugin/v/1.0.4