cordova-plugin-background-mode icon indicating copy to clipboard operation
cordova-plugin-background-mode copied to clipboard

Android 9 Fix

Open boedy opened this issue 5 years ago • 7 comments

Background mode is not working for android 9. As it would not launch the Foreground service.

Based on android documentation FOREGROUND_SERVICE permission is required:

Note: Apps that target Android 9 (API level 28) or higher and use foreground services must request the FOREGROUND_SERVICE permission. This is a normal permission, so the system automatically grants it to the requesting app.

If an app that targets API level 28 or higher attempts to create a foreground service without requesting FOREGROUND_SERVICE, the system throws a SecurityException. source

Also the service was not added correctly to the AndroidManifest.xml

boedy avatar Mar 11 '19 18:03 boedy

Please Merge it!!

okhiroyuki avatar Aug 18 '19 08:08 okhiroyuki

A merge would be appreciated!

@okhiroyuki Until this is merged you can add the following snippet to the Android platform section in your config.xml:

<config-file parent="/*" target="AndroidManifest.xml">
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
</config-file>

Full structure like this:

<widget id="com.example.app" version="1.0.0">
    [...]
    <platform name="android">
        <config-file parent="/*" target="AndroidManifest.xml">
            <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
        </config-file>
        [...]
    </platform>
    [...]
</widget>

RafaelKr avatar Aug 22 '19 12:08 RafaelKr

@RafaelKr Thank you. It's a nice snippet!!

okhiroyuki avatar Aug 22 '19 13:08 okhiroyuki

If i implement this Code it is working fine. https://github.com/katzer/cordova-plugin-background-mode/issues/436#issuecomment-479880108

danielehrhardt avatar Oct 20 '19 12:10 danielehrhardt

quick note: as per this comment by @martin-dufka, I had to include an entry in my config.xml for two permissions before I got this to work on my Xiaomi Mi Mix 2 with LineageOS 16.0 (Android 9.0.0):

  • android.permission.FOREGROUND_SERVICE
  • android.permission.WAKE_LOCK

can anyone else confirm this behaviour?

ZaLiTHkA avatar Oct 29 '19 07:10 ZaLiTHkA

To add more information. I also had to add the WAKE_LOCK permission. I was also getting a "unbound prefix" error when I was trying to do the above work around.

To fix that I followed these instructions: https://github.com/dpa99c/cordova-custom-config/issues/24

The xmlns:android="http://schemas.android.com/apk/res/android" attribute should be added to the root tag inside the config.xml if you want to use .

asoap avatar Nov 05 '19 21:11 asoap

+1 to merging this

manstie avatar Nov 09 '21 03:11 manstie