NativeScript / plugins

@nativescript plugins to help with your developments.
https://docs.nativescript.org/plugins/index.html
Apache License 2.0
189 stars 107 forks source link

[@nativescript/background-http] packagename - illegal argument exception #517

Open ahsih opened 1 year ago

ahsih commented 1 year ago

Issue Description

Hi guys,

When I try to use your background http to upload a file,

I noticed I am getting : Exception java.lang.RuntimeException: Unable to create service net.gotev.uploadservice.UploadService: java.lang.IllegalArgumentException: You have to set namespace to your app package name (context.packageName) in your Application subclass at android.app.ActivityThread.handleCreateService (ActivityThread.java:5086) at android.app.ActivityThread.-$$Nest$mhandleCreateService at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2428) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loopOnce (Looper.java:226) at android.os.Looper.loop (Looper.java:313) at android.app.ActivityThread.main (ActivityThread.java:8757) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1067) Caused by java.lang.IllegalArgumentException: You have to set namespace to your app package name (context.packageName) in your Application subclass at net.gotev.uploadservice.UploadServiceConfig.getNamespace (UploadServiceConfig.kt:74) at net.gotev.uploadservice.UploadServiceConfig.getBroadcastNotificationAction (UploadServiceConfig.kt:234) at net.gotev.uploadservice.UploadServiceConfig.getBroadcastNotificationActionIntentFilter (UploadServiceConfig.kt:248) at net.gotev.uploadservice.observer.request.NotificationActionsObserver.register (NotificationActionsObserver.kt:31) at net.gotev.uploadservice.UploadService.onCreate (UploadService.kt:194) at android.app.ActivityThread.handleCreateService (ActivityThread.java:5073)

This is because in this file: https://github.com/NativeScript/plugins/blob/main/packages/background-http/index.android.ts line 30, we pass in the Utils.android.getApplication() but the inner method is looking for Utils.android.getApplication().packageName, whereas we get the packageName by Utils.android.getApplication().getPackageName() which can be null/empty, not sure if this is a bug?

Reproduction

  1. uploadFile
  2. close the app and reopen
  3. app crash.

Relevant log output (if applicable)

No response

Environment

No response

Please accept these terms

chimmelb commented 10 months ago

I have started seeing this error recently as well (in Crashlytics). Android versions 10, 12, 13 A lot of Galaxy devices, but that could just be a popular brand for our users (S23, A13, S21, S20, S22, etc). Some other manufacturers as well.

This is not ALL android users. And I would suspect not every upload even for these users, but some condition must trigger it.

Fatal Exception: java.lang.RuntimeException
Unable to create service net.gotev.uploadservice.UploadService: java.lang.IllegalArgumentException: You have to set namespace to your app package name (context.packageName) in your Application subclass
Caused by java.lang.IllegalArgumentException
You have to set namespace to your app package name (context.packageName) in your Application subclass
jeffswitzer commented 7 months ago

I'm also trying to get background-http working again in an app and am getting: JS: CONSOLE ERROR: ERROR Error: java.lang.IllegalArgumentException: You have to set namespace to your app package name (context.packageName) in your Application subclass

triniwiz commented 6 months ago

You need to call init before using the plugin