plugins icon indicating copy to clipboard operation
plugins copied to clipboard

[@nativescript/background-http] error Context.startForegroundService() did not then call Service.startForeground()

Open ghost opened this issue 5 years ago • 2 comments

Hello, We are using @nativescript/background-http on NativeScript with Angular to upload photos, web API .net Core 3.1

We have this error

System.err: An uncaught Exception occurred on "main" thread. System.err: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{6fabfc7 u0 it.openweb.next2u/net.gotev.uploadservice.UploadService} System.err: System.err: StackTrace: System.err: android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{6fabfc7 u0 it.openweb.next2u/net.gotev.uploadservice.UploadService} System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2052) System.err: at android.os.Handler.dispatchMessage(Handler.java:107) System.err: at android.os.Looper.loop(Looper.java:214) System.err: at android.app.ActivityThread.main(ActivityThread.java:7710) System.err: at java.lang.reflect.Method.invoke(Native Method) System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516) System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

Version numbers: -CLI 7.1.1 "@nativescript/android": "7.0.1", "@nativescript/ios": "7.1.0",

"@nativescript/background-http": "^5.0.1",

package.json:

"dependencies": { "@angular/animations": "~11.0.5", "@angular/common": "~11.0.5", "@angular/compiler": "~11.0.5", "@angular/core": "~11.0.5", "@angular/forms": "~11.0.5", "@angular/platform-browser": "~11.0.5", "@angular/platform-browser-dynamic": "~11.0.5", "@angular/router": "~11.0.5", "@nativescript/angular": "~11.0.0", "@nativescript/background-http": "^5.0.1", "@nativescript/core": "^7.1.0", "@nativescript/theme": "~3.0.1", "@nativescript/types": "^7.1.0", "@nativescript/webpack": "^4.0.0", "jwt-decode": "^2.2.0", "nativescript-ui-sidedrawer": "~9.0.3", "reflect-metadata": "~0.1.13", "rxjs": "~6.6.3", "zone.js": "~0.11.3" }, "devDependencies": { "@angular/compiler-cli": "~11.0.5", "@nativescript/android": "7.0.1", "@nativescript/ios": "7.1.0", "@ngtools/webpack": "~11.0.5", "codelyzer": "~6.0.0", "node-sass": "^4.14.1", "tslint": "~6.1.3", "typescript": "~4.0.0" }

UploadFile.ts

public _uploadFile() {

   const name = this.file.substr(this.file.lastIndexOf('/') + 1);
    const description = `${name}`;

    const request = {
        url: `${this.avatarUrl}`,
        method: 'POST',
        utf8: true,
        headers: {
            "Content-Type": "multipart/form-data",
            "File-Name": name
        },
        description: description,
        androidAutoDeleteAfterUpload: false,
        androidNotificationTitle: 'Uploading Product Image',
        androidDisplayNotificationProgress:true
    };

    let task: Task;
    let lastEvent = '';

    const params = [
        { name: 'test', value: 'value' },
        { name: 'testInt', value: 10 },
        { name: 'bool', value: true },
        { name: 'fileToUpload', filename: this.file, mimeType: 'image/jpeg' },
    ];

    task = this.session.multipartUpload(params, request);

    function onEvent(e) {
        if (lastEvent !== e.eventName) {
            // suppress all repeating progress events and only show the first one
            lastEvent = e.eventName;
        } else {
            return;
        }

        this.events.push({
            eventTitle: e.eventName + ' ' + e.object.description,
            eventData: JSON.stringify({
                error: e.error ? e.error.toString() : e.error,
                currentBytes: e.currentBytes,
                totalBytes: e.totalBytes,
                body: e.data,
                responseCode: e.responseCode,
            }),
        });
    }

    task.on('progress', onEvent.bind(this));
    task.on('error', onEvent.bind(this));
    task.on('responded', onEvent.bind(this));
    task.on('complete', onEvent.bind(this));
    lastEvent = '';
    this.tasks.push(task);
}

web API .net Core 3

    [HttpPost("attachement")]
    public async Task<ActionResult> UploadAttachement([FromForm] IFormFile file)
    {
        var attachement = new modelProfile
        {
            ContentType = file.ContentType,
            name = file.FileName
        };
        using (var stream = file.OpenReadStream())
        {
            attachement.content = new byte[file.Length];
            await stream.ReadAsync(attachement.content, 0, (int)file.Length);
        };

        await serviceUpload.uploadProfile(attachement);

        return Ok();
    }

Can you please help with this error and the way to fix it? Thank you

ghost avatar Jan 02 '21 17:01 ghost

I get this too, sometimes. Base/Original android project has very similar issue: https://github.com/gotev/android-upload-service/issues/549 (which points to a StackOverflow question and a few answers). Worth keeping an eye on it.

chimmelb avatar Jan 04 '21 22:01 chimmelb

I will check it. Thank you

EinatGit avatar Jan 06 '21 08:01 EinatGit