Search code examples
javafxportsgluon-mobile

Gluon android notification doesn't run


How can I use android notifications in gluon? I used the below code, but the notification doesn't run. Maybe it doesn't find LocalNotification Service?

Services.get(LocalNotificationsService.class).ifPresent(service
            -> 
            {
                service.getNotifications().add(new Notification(
                        notificationId, "Sample Notification Text",
                        ZonedDateTime.now().plusSeconds(10), ()
                        -> 
                        {
                            Alert alert = new Alert(AlertType.INFORMATION,
                                                    "You have been notified!");
                            Platform.runLater(() -> alert.showAndWait());
                }));
    });

manifiest:

<activity android:name="javafxports.android.FXActivity" android:label="GluonApplication1" android:configChanges="orientation|screenSize">
        <meta-data android:name="main.class" android:value="com.gluonapplication1.GluonApplication1"/>
        <meta-data android:name="debug.port" android:value="0"/>
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    <activity android:name="com.gluonhq.impl.charm.down.plugins.android.NotificationActivity"
              android:parentActivityName="javafxports.android.FXActivity">
        <meta-data android:name="android.support.PARENT_ACTIVITY" 
                   android:value="javafxports.android.FXActivity"/>
    </activity>
    <receiver android:name="com.gluonhq.impl.charm.down.plugins.android.AlarmReceiver" />
    <service
        android:name="com.gluonapplication1.MyIntentService"
        android:exported="false">
    </service>

EDIT

Dependencies included in the build.gradle file:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.gluonhq:charm:4.2.0' 
    compile 'com.gluonhq:charm-down-common:2.0.1' 
    compile group: 'com.gluonhq', name: 'charm-down-plugin-local-notifications', version: '3.1.0' 
    compile 'org.apache.commons:commons-lang3:3.5' 
    desktopRuntime 'org.xerial:sqlite-jdbc:3.15.1' 
    androidRuntime 'org.sqldroid:sqldroid:1.0.3' 
} 

Solution

  • Based on the list of your dependencies, you are not adding the android ones, and you are not using the new downConfig configuration to include the Charm Down plugins. Read here the changes in the build script using the jfxmobile plugin 1.1.0+.

    You will need to change your build.gradle file at least to include this:

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'org.javafxports:jfxmobile-plugin:1.2.0'
        }
    }
    
    apply plugin: 'org.javafxports.jfxmobile'
    
    repositories {
        jcenter()
        maven {
            url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
        }
    }
    
    mainClassName = 'your.main.class.Name'
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar']) 
        compile 'com.gluonhq:charm:4.2.0' 
        compile 'org.apache.commons:commons-lang3:3.5' 
        desktopRuntime 'org.xerial:sqlite-jdbc:3.15.1' 
        androidRuntime 'org.sqldroid:sqldroid:1.0.3' 
    }
    
    jfxmobile {
        downConfig {
            version = '3.1.0'
            // Do not edit the line below. Use Gluon Mobile Settings in your project context menu instead
            plugins 'display', 'lifecycle', 'local-notifications', 'statusbar', 'storage'
        }
        android {
            manifest = 'src/android/AndroidManifest.xml'
        }
        ios {
            infoPList = file('src/ios/Default-Info.plist')
            forceLinkClasses = [
                    'com.gluonhq.**.*',
                    'javax.annotations.**.*',
                    'javax.inject.**.*',
                    'javax.json.**.*',
                    'org.glassfish.json.**.*'
            ]
        }
    }