Ionic3 Fatal Exception: android .app.RemoteServiceException: Плохое уведомление для startForeground на android 9 устройствах? - PullRequest
0 голосов
/ 21 февраля 2020

Я сгенерировал сборку android, но она не работает на некоторых устройствах Android версии 9 в приложении версии android 9, сбой после входа в систему. В консоли появилась ошибка ниже. enter image description here

Протестировано на следующих устройствах:

Oppo F11 Pro: приложение не работает.

Samsung, Nokia, MI: после сбоя приложения login

Пробное решение ниже :

Добавить внутреннюю конфигурацию. xml

1-е решение

<platform name="android">
    <config-file parent="./" target="app/src/main/AndroidManifest.xml" xmlns:android="http://schemas.android.com/apk/res/android">
        <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    </config-file>
</platform>
2nd Solution : add in AndroidManifest.xml

> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"
> />

Я пробовал все и вся, но у меня ничего не получалось, кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 24 февраля 2020

наконец-то через 2 дня я исправил вышеуказанную проблему:

попробуйте команду ниже.

$ ionic cordova platform rm android
$ ionic cordova platform rm ios
$ ionic cordova plugin add https://github.com/tushe/cordova-plugin-background-mode.git
$ npm install --save @ionic-native/background-mode

$ ionic cordova platform add android
$ ionic cordova platform add ios

Если не работает background-mode, установите ниже Изменения в cordova-plugin-background-mode работал на меня. Cra sh проблема устранена, а фоновый плагин работает нормально.

В ForegroundService. java внесены следующие изменения:

Add below import statement: import android.app.NotificationChannel;

b) Добавьте ниже глобальные переменные:

public static final String NOTIFICATION_CHANNEL_ID_SERVICE = "de.appplant.cordova.plugin.background";
public static final String NOTIFICATION_CHANNEL_ID_INFO = "com.package.download_info";

c) Замените метод keepAwake () следующим кодом:

private void keepAwake() {
        JSONObject settings = BackgroundMode.getSettings();
        boolean isSilent    = settings.optBoolean("silent", false);
        if (!isSilent) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                nm.createNotificationChannel(new NotificationChannel(NOTIFICATION_CHANNEL_ID_SERVICE, "App Service", NotificationManager.IMPORTANCE_DEFAULT));
                nm.createNotificationChannel(new NotificationChannel(NOTIFICATION_CHANNEL_ID_INFO, "Download Info", NotificationManager.IMPORTANCE_DEFAULT));
            } else {
                startForeground(NOTIFICATION_ID, makeNotification());
            }
        }

        PowerManager powerMgr = (PowerManager)
                getSystemService(POWER_SERVICE);
        wakeLock = powerMgr.newWakeLock(
                PowerManager.PARTIAL_WAKE_LOCK, "BackgroundMode");
        wakeLock.acquire();
}

Добавьте ниже в AndroidManifest. xml файл:

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

В коде, где я вызывал плагин фонового режима, при активации использовалась опция disableWebViewOptimizations:

cordova.plugins.backgroundMode.on('activate', function() {
       cordova.plugins.backgroundMode.disableWebViewOptimizations();
 }); 

Вышеописанная процедура работала для меня.

...