Je génère une image enregistrée dans FileSytemStorage.getAppHomePath() dir. Je dois maintenant la partager par e-mail, SMS ... Voilà pourquoi je suis en utilisant le code suivant (basé sur Codename One documentation) dans ma méthode d'action:Image toujours manquante dans le message reçu lors du partage d'une image dans Codename One
long time = new Date().getTime();
String fullOutputPath = FileSystemStorage.getInstance().getAppHomePath()
+ "Montage_" + Long.toString(time) + ".png";
// Save the image with the ImageIO class
try (OutputStream os = FileSystemStorage.getInstance().openOutputStream(fullOutputPath)){
ImageIO.getImageIO().save(montage.getMontageImage(), os, ImageIO.FORMAT_PNG, 1.0f);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Enable image sharing (outside the try/catch so that the outputstream in closed for sure)
if (FileSystemStorage.getInstance().exists(fullOutputPath)) {
Dialog.show("Saved", "Photo collage saved to " + fullOutputPath
+ " (file size = " + FileSystemStorage.getInstance().getLength(fullOutputPath) +" B)", "OK", null);
//Photo collage saved to file://home/Montage_14669... .png (file size = 50387B)
findValidateMontageShareButton3().setImageToShare(fullOutputPath, "image/png");
// Null pointer exception
donc de cette façon que j'obtenir un NPE et si je don t tester si le fichier existe il n'y a pas NPE mais l'image est toujours manquante (à la fois dans le simulateur et sur le périphérique).
La trace de la pile est la suivante:
java.lang.NullPointerException
at userclasses.StateMachine.onPage3_ValidateMontageShareButton3Action(StateMachine.java:852)
at generated.StateMachineBase.handleComponentAction(StateMachineBase.java:757)
at com.codename1.ui.util.UIBuilder$FormListener.actionPerformed(UIBuilder.java:2835)
at com.codename1.ui.util.EventDispatcher.fireActionSync(EventDispatcher.java:459)
at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:362)
at com.codename1.ui.Button.fireActionEvent(Button.java:411)
at com.codename1.ui.Button.released(Button.java:442)
at com.codename1.ui.Button.pointerReleased(Button.java:530)
at com.codename1.ui.Form.pointerReleased(Form.java:2627)
at com.codename1.ui.Form.pointerReleased(Form.java:2563)
at com.codename1.ui.Component.pointerReleased(Component.java:3158)
at com.codename1.ui.Display.handleEvent(Display.java:2025)
at com.codename1.ui.Display.edtLoopImpl(Display.java:1067)
at com.codename1.ui.Display.mainEDTLoop(Display.java:996)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
Il semble que le fichier mon application génère n'est pas accessible à l'application de partage. Dois-je ajouter une permission supplémentaire comme conseillé here for Android?
S'il vous plaît noter: Je ne sais pas si elle est liée à ce problème, mais je ne peux pas accéder au menu Codename Réglages One d'Eclipse plus (peut-être depuis la mise à niveau à CN1 lib v 115)
Toute aide appréciée ,
Vive
Les autorisations nécessaires doivent être en place. Quelle est la pile de l'exception du pointeur nul? –
J'ai ajouté la trace de la pile. – HelloWorld
Vous m'avez donné une idée. J'ai testé si findValidateMontageShareButton3() renvoyait null et c'était en effet. Donc, bien que je ne puisse pas l'expliquer, j'ai changé pour '((ShareButton) c) .setImageToShare (fullOutputPath," image/png ");' et le NPE est parti. Malheureusement, le message que j'envoie manque encore l'image. – HelloWorld