2017-01-09 1 views
0

J'ai mis en place un bouton dans mon application mobile et avoir un champ de texte avec un numéro de téléphone. Ce que je veux atteindre: Lorsque l'utilisateur Cliquez sur le bouton-> La page par défaut pour envoyer des SMS est ouverte dans Android et le Telefonnummer est Coller dans le champ de texte numérique par défaut pour Android.Comment mettre en œuvre dans JAVAFX/Gluon un bouton pour aller à l'envoi par défaut Message pour mon Android Mobile

I Utilisation gluons mobile avec JavaFX

:compileJava/Users/yotti/CAMVOYAGE/MultiViewProjectFXML/src/main/java/com/gluonapplication/views/AndroidSMSService.java:4: error: package android.content does not exist 
import android.content.Intent; 
        ^
/Users/yotti/CAMVOYAGE/MultiViewProjectFXML/src/main/java/com/gluonapplication/views/AndroidSMSService.java:5: error: package android.net does not exist 
import android.net.Uri; 
       ^
/Users/yotti/CAMVOYAGE/MultiViewProjectFXML/src/main/java/com/gluonapplication/views/AndroidSMSService.java:12: error: cannot find symbol 
     Intent smsIntent = new Intent(Intent.ACTION_VIEW);   
     ^
    symbol: class Intent 
    location: class AndroidSMSService 
/Users/yotti/CAMVOYAGE/MultiViewProjectFXML/src/main/java/com/gluonapplication/views/AndroidSMSService.java:12: error: cannot find symbol 
     Intent smsIntent = new Intent(Intent.ACTION_VIEW);   
          ^
    symbol: class Intent 
    location: class AndroidSMSService 
/Users/yotti/CAMVOYAGE/MultiViewProjectFXML/src/main/java/com/gluonapplication/views/AndroidSMSService.java:12: error: cannot find symbol 
     Intent smsIntent = new Intent(Intent.ACTION_VIEW);   
            ^
    symbol: variable Intent 
    location: class AndroidSMSService 
/Users/yotti/CAMVOYAGE/MultiViewProjectFXML/src/main/java/com/gluonapplication/views/AndroidSMSService.java:13: error: cannot find symbol 
     smsIntent.setData(Uri.parse("sms:")); 
         ^
    symbol: variable Uri 
    location: class AndroidSMSService 
/Users/yotti/CAMVOYAGE/MultiViewProjectFXML/src/main/java/com/gluonapplication/views/AndroidSMSService.java:15: error: cannot access Activity 
     FXActivity.getInstance().startActivity(smsIntent); 
       ^
    class file for android.app.Activity not found 
7 errors 
FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':compileJava'. 
> Compilation failed; see the compiler error output for details. 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 

enter image description here

Répondre

1

Je vous suggère de jeter un oeil à la façon dont les plug-ins Charm Down sont implemented.

Vous verrez que vous pouvez utiliser la plupart des services existants sans autres modifications.

Si le service que vous recherchez n'est pas encore mis en œuvre, il est vraiment facile de créer, en suivant les mêmes lignes directrices que les plug-ins existants:

sur vos paquets sources [Java], ajoutez les classes suivantes:

Emballage: com.gluonhq.charm.down.plugins. Classe: SMSService:

package com.gluonhq.charm.down.plugins; 

public interface SMSService { 
    void sendSMS(String number); 
} 

Paquet: com.gluonhq.charm.down.plugins. Classe: SMSServiceFactory:

package com.gluonhq.charm.down.plugins; 

import com.gluonhq.charm.down.DefaultServiceFactory; 

public class SMSServiceFactory extends DefaultServiceFactory<SMSService> { 

    public SMSServiceFactory() { 
     super(SMSService.class); 
    } 

} 

Enfin, sur le package Android, mettre en œuvre le service:

Paquet: com.gluonhq.charm.down.plugins.android, classe: AndroidSMSService

package com.gluonhq.charm.down.plugins.android; 

import android.content.Intent; 
import android.net.Uri; 
import com.gluonhq.charm.down.plugins.SMSService; 
import javafxports.android.FXActivity; 

public class AndroidSMSService implements SMSService { 

    @Override 
    public void sendSMS(String number) { 
     Intent smsIntent = new Intent(Intent.ACTION_VIEW);   
     smsIntent.setData(Uri.parse("sms:")); 
     smsIntent.putExtra("address", number); 
     FXActivity.getInstance().startActivity(smsIntent); 
    } 

} 

test

Maintenant tout ce que vous besoin de faire est d'utiliser le service SMS dans votre code, une fois que vous avez le Numéro ajouté au textField, et un bouton pour déclencher l'action:

Services.get(SMSService.class) 
      .ifPresent(s -> button.setOnAction(e -> s.sendSMS(textField.getText()))); 

Générez l'application et la déployer sur votre appareil Android. Essayez-le, et vérifiez qu'il ouvre l'application Messenger (peut-être qu'il vous demandera d'utiliser d'autres applications différentes), et utilise déjà le numéro fourni, de sorte que vous pouvez commencer à taper votre message.

+0

Pereda J'ai essayé votre solution et ajouté un groupe de compilation: 'com.google.android', nom: 'android', version: '4.1.1.4' à Gradle. mais j'ai cette erreur com.android.builder.packaging.DuplicateFileException: Dupliquer les fichiers copiés dans les ressources APK.arsc. La dépendance est-elle incorrecte? –

+1

Pourquoi ajoutez-vous la dépendance Android? Il est déjà inclus par le plugin jfxmobile –

+0

Lorsque je l'enlève, j'ai ce paquet d'erreur android.content n'existe pas. impossible de trouver le symbole Intention smsIntent = new Intent (Intent.ACTION_VIEW); –