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

Android Discussion :

Intent et fichier.apk


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 46
    Points : 23
    Points
    23
    Par défaut Intent et fichier.apk
    Bonjour à tous,

    J'utilise actuellement un Intent dans mon application pour lancer une autre application située dans un fichier .apk.

    Tout ceci fonctionne très bien seulement à chaque fois que mon application appelle l'application contenue dans le .apk, celle-ci demande à s'installer avant de se lancer. Je précise que cette application est déjà installée sur le périphérique mobile.

    J'aimerais que l'étape de l'installation n'apparaisse pas et que l'application se lance directement.

    Cela est-il possible ?

    Dans l'attente d'une réponse,

    Nylwen

  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
    J'aimerais que l'étape de l'installation n'apparaisse pas et que l'application se lance directement.
    Pour des raisons d'autorisation et de prévention à l'utilisateur je pense que cela est mieux de laissé l'intallation visible à celui-ci.

    Maintenant à toi de bien expliquer à l'utilisateur que cette application est nécessaire au bon fonctionnement de la première.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Mon application fait parti d'un projet plus important.

    L'objectif est que l'utilisateur ne voie pas qu'il passe d'une application à l'autre, que ce soit transparent pour lui.

    Or avec l'étape de l'installation ce n'est plus du tout transparent pour l'utilisateur et le cahier des charges n'est donc plus respecté.

    L’icône sur le bureau de la tablette permet de lancer directement l'application sans l'installer. Est-ce l'application avec l'extension .apk ou un autre fichier créé lors de l'installation de l'application et qui possède donc une extension différente ? Si oui laquelle et est-il possible d'y accéder ? Si non est-il possible de désactiver l'installation de l'application et de l’exécuter directement ?

  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
    Une application doit nécessairement avoir été installée avant de pouvoir l'utiliser. Une fois installée, il n'est plus demandé à l'utilisateur de l'installer à chaque fois qu'il la "lance"
    Or dans ton cas, tu sembles indiquer qu'à chaque appel de ta deuxième application (via ton Intent), le système demande à installer l'application, alors que celle-ci serait déjà installée... Si c'est bien ce qui se passe, il doit y avoir un problème dans la façon que tu as d'appeler ton appli, car ça ne devrait pas se produire

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par chpil Voir le message

    Or dans ton cas, tu sembles indiquer qu'à chaque appel de ta deuxième application (via ton Intent), le système demande à installer l'application, alors que celle-ci serait déjà installée... Si c'est bien ce qui se passe, il doit y avoir un problème dans la façon que tu as d'appeler ton appli, car ça ne devrait pas se produire
    C'est bien ça. Seulement je ne vois pas à quel endroit je pourrais avoir fait une erreur. Je vous mets le bout de mon code correspondant pour que vous puissiez regarder par vous-même.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Intent intention = new Intent(Intent.ACTION_VIEW);
     
    File application = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "nom_application.apk");  
     
    intention.setDataAndType(Uri.fromFile(application), "application/vnd.android.package-archive");
     
    startActivity(intention);

  6. #6
    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
    Euh, là, tu demandes effectivement à installer l'application à chaque fois que tu lances ton Intent. Donc, finalement, c'est normal, ce qui t'arrive
    Il faut que, dans ton application cible, tu définisses l'Intent auquel cette application sera capable de répondre, et lancer cet Intent depuis l'application source.
    Tu peux déjà regarder la doc pour mieux comprendre

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    J'ai regardé la page de documentation sur les Intents que tu m'as indiqué mais je n'ai malheureusement pas trouvé mon bonheur ...

    Aurait-tu un bout de code à me montrer pour que je m'en serve d'exemple ?

    De plus l'application cible est développée en Flash donc je pense qu'il va être compliqué de définir, dans l'application cible, l'Intent auquel cette application sera capable de répondre.

    Une solution à me proposer ?

  8. #8
    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
    Même si tu ne peux pas agir sur le choix de l'Intent de ton application cible, il faut à minima que tu le connaisses si tu veux activer ton application cible
    Regarde du côté de la doc de l'outil qui te permet de packager l'appli "flash" en application Android, tu auras peut-être des informations

  9. #9
    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,



    Je n'ai jamais fait mais il me semble qu'il suffit de connaitre le nom du package de l'application pour la lancer en utilisant le PackageManager :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PackageManager manager = getPackageManager();
     
    Intent intent = manager.getLaunchIntentForPackage("com.app.package.name");
    if (intent!=null)
        startActivity(intent);


    Si vraiment tu ne connais pas le nom de l'application, tu dois pouvoir le retrouver toujours via le PackageManager :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PackageManager manager = getPackageManager();
     
    List<applicationinfo> packages = manager.getInstalledApplications(PackageManager.GET_META_DATA);
     
    for (ApplicationInfo packageInfo : packages) {
    	Log.d("apps", "Package :" + packageInfo.packageName);
    }

    a++

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Merci beaucoup adiGuba ça marche !

  11. #11
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Points : 67
    Points
    67
    Par défaut
    Bonjour,
    J'ai rencontré même problème.
    En effet je veux faire l'appel d'un apk, dans mon projet codé en android et je ne connais que le nom de mon apk ( je ne connais pas le nom du package que vous venez de motionner précédemment)

    S'il vous plait est ce que vous pouvez m'aider?
    Je serais reconnaissante si j'arrive à y faire. merci d'avance

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 20
    Points : 31
    Points
    31
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PackageManager manager = getPackageManager();
     
    Intent intent = manager.getLaunchIntentForPackage("com.app.package.name");
    if (intent!=null)
        startActivity(intent);
    ça n'a pas marché pour moi, je lance la première application et au moment du lancement de la deuxième application m'affiche le message 'The application has stopped unexpectedly'

  13. #13
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Points : 67
    Points
    67
    Par défaut
    J'ai résolu le problème comme ceci
    Tout d'abord j'ai installé mon .apk sur l’émulateur puis j'ai écrit ce bout de code qui se lance lorsque je clic sur un bouton de mon menu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
    for(int i=0;i<packs.size();i++) 
      { PackageInfo p = packs.get(i);
       if ((!false) && (p.versionName == null)) 
         {	continue ;
    	}
         Log.w("packageApp", "Nom Application : "+p.applicationInfo.loadLabel(getPackageManager()).toString()+" Package : "+p.packageName);
    		}
    Ceci est fait pour reconnaître le nom du Package de cette apk (je le trouve dans le LogCat) --> lysesoft.andftp dans ma cas
    Ensuite j'ai changé cette bout code par ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Intent launchIntent = getPackageManager().getLaunchIntentForPackage("lysesoft.andftp");
    startActivity(launchIntent);

  14. #14
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 20
    Points : 31
    Points
    31
    Par défaut
    ça marche, je vous remercie énormement

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/11/2013, 19h13
  2. Ouverture d'un fichier APK
    Par coconiut dans le forum Android
    Réponses: 5
    Dernier message: 18/08/2013, 10h39
  3. Upload d'un fichier.apk sous Apache
    Par Tulipe87 dans le forum Apache
    Réponses: 1
    Dernier message: 28/03/2012, 22h27
  4. Comment intégrer la BD dans le fichier APK
    Par jerem_orga dans le forum Android
    Réponses: 1
    Dernier message: 23/01/2012, 17h07
  5. comment ouvrir un fichier .apk sous android
    Par yasminacha dans le forum Android
    Réponses: 2
    Dernier message: 18/03/2011, 11h57

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