IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Intercepter le bouton Back


Sujet :

Composants graphiques Android

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 140
    Points : 35
    Points
    35
    Par défaut Intercepter le bouton Back
    Bonjour à tous

    dans mon application ,je fait la lecture d'un PDF avec adobe reader,
    quand je termine la lecture(càd appuyer sur le BACK Button) je veux supprimer ce PDF.

    le probleme, que je sais que pour supprimer le fichier j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    File file = new File("mnt/sdcard/pdf/android.pdf");
    file.delete();

    et la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        @Override
    	    public boolean onKeyDown(int keyCode, KeyEvent event)  {
    	        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
     
    	//faire qlq choses
    	            return true;
    	        }
     
    	        return super.onKeyDown(keyCode, event);
    	    }

    mais quand je fait ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        @Override
    	    public boolean onKeyDown(int keyCode, KeyEvent event)  {
    	        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
     
     
     
    	File file = new File("mnt/sdcard/pdf/android.pdf");
    file.delete();
    	            return true;
    	        }
     
    	        return super.onKeyDown(keyCode, event);
    	    }
    rien ne se passe


    avez vous une solution ?

    merci d'avance

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Si ton but est de supprimer le fichier lorsque tu quittes cette activity alors pourquoi tu ne met pas ta suppression de fichier dans le OnDestroy() de ton Activity ou OnStop si tu veux aussi ?

    Après vu ton code enlève
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    event.getRepeatCount() == 0
    qui ne te sers à rien. Assures toi bien du Override est cela devrait marcher
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 140
    Points : 35
    Points
    35
    Par défaut
    Si ton but est de supprimer le fichier lorsque tu quittes cette activity alors pourquoi tu ne met pas ta suppression de fichier dans le OnDestroy() de ton Activity ou OnStop si tu veux aussi ?
    oui c ça!

    voilà mon activ,mais le fichier n'est pas supprimé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    public class main1 extends Activity {
     
     
    	public static final int CODE_RETOUR = 0;
     
    	 /** User password. */
        public static byte[] USER = "********".getBytes();
        /** Owner password. */
        public static byte[] OWNER = "********".getBytes();
     
        /** The resulting PDF file. */
        public static final String RESULT1
            = "mnt/sdcard/pdf/tutorial_android.pdf";
        /** The resulting PDF file. */
        public static final String RESULT2
            = "mnt/sdcard/pdf/encryption_decrypted.pdf";
     
    	private static final int KeyCode = 0;
     
        /**
         * Creates a PDF file: hello.pdf
         * @param    args    no arguments needed
         */
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main1);
            main1 metadata = new main1();
     
     
            try {
    			metadata.decryptPdf(RESULT1, RESULT2);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (DocumentException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
     
     
    		File file = new File(RESULT2);
     
            if (file.exists()) {
                Uri path = Uri.fromFile(file);
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setPackage("com.adobe.reader");
                intent.setDataAndType(path, "application/pdf");
    // optionnel a toi de voir quel flag tu souhaites
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
     
     
                try {
                	startActivity(intent);
     
                } 
                catch (ActivityNotFoundException e) {
                    Toast.makeText(main1.this, 
                        "No Application Available to View PDF", 
                        Toast.LENGTH_SHORT).show();
                }
            }
     
     
     
     
     
     
     
     
     
     
        }
     
     
     
     
     
     
        /**
         * Manipulates a PDF file src with the file dest as result
         * @param src the original PDF
         * @param dest the resulting PDF
         * @throws IOException
         * @throws DocumentException
         */
        public void decryptPdf(String src, String dest) throws IOException, DocumentException {
            PdfReader reader = new PdfReader(src, OWNER);
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
            stamper.close();
        }
     
     
       public void  OnDestroy(){
     
    	   File file = new File("mnt/sdcard/pdf/encryption_decrypted.pdf");
    	   file.delete();
     
        }
     
     
     
     
     
     
        }

  4. #4
    Membre actif Avatar de chpil
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 143
    Points : 212
    Points
    212
    Par défaut
    Si j'ai bien compris, ce que tu veux faire, c'est supprimer le PDF lorsque tu quittes le reader PDF par 'back' et que tu reviens sur ton Activity, et non pas lorsque tu quittes ton Activity.
    Ce n'est pas la méthode onDestroy (qui se nomme onDestroy, et non OnDestroy, la casse des noms de méthodes/classes/... a une importance en Java) qu'il faut utiliser.
    Dans ton cas, il faut que tu lances l'Activity du reader PDF par un startActivityForResult, et que tu implémentes ensuite dans tonActivity la méthode onActivityResult, pour être notifié du fait que l'Activity appelée s'est terminée; à ce moment là, tu pourras supprimer ton fichier.
    Plus d'information sur startActivityForResult/onActivtyResult dans la doc

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Loggue le retour de delete(), ainsi que des infos sur le fichier (exists() ?).

    Enfin que fait la méthode close() de PdfStamper ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PdfReader reader = new PdfReader(src, OWNER);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
            stamper.close();
    Fermes-t-elle le PdfReader , l'OutputStream, les deux ou aucun ???

    Dans le doute utilises des try/finally pour fermer tout cela proprement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PdfReader reader = new PdfReader(src, OWNER);
    try {
    	OutputStream output = new FileOutputStream(dest);
    	try {
    		PdfStamper stamper = new PdfStamper(reader, output );
    	        stamper.close();
    	} finally {
    		output.close();
    	}
    } finally {
    	reader.close();
    }

    a++

Discussions similaires

  1. [VB.NET] - Message Box - Intercepter le bouton Aide?
    Par xVINCEx dans le forum Windows Forms
    Réponses: 14
    Dernier message: 03/06/2021, 10h51
  2. [PHP-JS] Interception du history:back
    Par sebos63 dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2006, 13h34
  3. Intercepter le bouton précédent.
    Par Warz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/02/2006, 16h41
  4. [PHP-JS] Bouton back
    Par samjung dans le forum Langage
    Réponses: 4
    Dernier message: 25/01/2006, 14h28
  5. detection clic bouton BACK de IE
    Par fallered dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/10/2005, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo