Skip to content

Android 9 Fix#435

Open
boedy wants to merge 2 commits into
katzer:masterfrom
boedy:android-9
Open

Android 9 Fix#435
boedy wants to merge 2 commits into
katzer:masterfrom
boedy:android-9

Conversation

@boedy

@boedy boedy commented Mar 11, 2019

Copy link
Copy Markdown

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

ebhsgit added a commit to ebhsgit/cordova-plugin-background-mode that referenced this pull request May 6, 2019
FOREGROUND_SERVICE
 - https://developer.android.com/guide/components/services
 - katzer#435

REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
 - To request user permission to ignore battery optimization
@okhiroyuki

Copy link
Copy Markdown

Please Merge it!!

@RafaelKr

Copy link
Copy Markdown

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>

@okhiroyuki

Copy link
Copy Markdown

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

@danielehrhardt

Copy link
Copy Markdown

If i implement this Code it is working fine.
#436 (comment)

@ZaLiTHkA

ZaLiTHkA commented Oct 29, 2019

Copy link
Copy Markdown

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?

@asoap

asoap commented Nov 5, 2019

Copy link
Copy Markdown

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:
dpa99c/cordova-custom-config#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 .

@manstie

manstie commented Nov 9, 2021

Copy link
Copy Markdown

+1 to merging this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants