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 :

Lancer un programme à partir d'une activity


Sujet :

Android

  1. #1
    Membre habitué Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Points : 197
    Points
    197
    Par défaut Lancer un programme à partir d'une activity
    Bonjour,

    Je cherche à lancer un programme à partir de mon application (par exemple la calculatrice, ou une autre appli).

    J'imagine qu'il faut passer par un intent avec ACTION_RUN, mais quelle est la syntaxe exacte ? quelqu'un a-t-il un exemple ?

    Merci d'avance.
    Christian
    Nexus 1 sous Cyanogen - Acer A500

  2. #2
    Membre habitué Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Points : 197
    Points
    197
    Par défaut
    J'ai beaucoup cherché, mais je ne trouve toujours pas...

    Je sais lancer un appel téléphone, passer en mode avion, mais toujours pas lancer une autre application, comme la calculatrice et d'autres programmes.

    Y-a-t-il une méthode pour ça ?
    Christian
    Nexus 1 sous Cyanogen - Acer A500

  3. #3
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Je vais te dire "oui", mais ça va sans doute pas t'aider ^^
    Vu que je connais pas vraiment la réponse, as-tu essayer de regarder dans le code source Android (notamment le Launcher)
    http://www.google.co.in/codesearch/p...rActivity.java

    tu as notament cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public Intent intentForPosition(int position) {
                if (mActivitiesList == null) {
                    return null;
                }
     
                Intent intent = new Intent(mIntent);
                ListItem item = mActivitiesList.get(position);
                intent.setClassName(item.packageName, item.className);
                if (item.extras != null) {
                    intent.putExtras(item.extras);
                }
                return intent;
    }
    Donc je dirais, qu'il faut juste que t'arrive à trouver le packageName de la calculatrice et le className.
    Après en partant de là, tu dois avoir moyen de trouver comment faire pour récupérer ça à partir d'un nom d'application


    edit :
    tu peux même faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    final PackageManager manager = getPackageManager();
    manager.getLaunchIntentForPackage(packageName);
    cf : http://d.android.com/resources/sampl...home/Home.html
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  4. #4
    Membre habitué Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Points : 197
    Points
    197
    Par défaut
    Merci pour ton aide,

    Je pensais bien à tout ça, mais justement, ce que je cherchais c'était comment récupérer les données packageName et className...

    Dommage qu'il n'y ait pas une fonction qui permette d'appeler une appi directement par son nom !

    Mais je vais surement pouvoir utiliser tout ça car je dois aussi appeler deux de mes appis, donc là je connais le packageName et le className. Quand j'aurai trouvé, je mettrai le source dans ce post.

    Merci aussi pour m'avoir aiguillé vers le source de Home, il y a plein de choses intéressantes dedans.
    Christian
    Nexus 1 sous Cyanogen - Acer A500

  5. #5
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Regarde du coté du packagemanager, y'a l'air d'avoir quelques fonctions pour lister les applications installées
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  6. #6
    Membre habitué Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Points : 197
    Points
    197
    Par défaut
    ok je regarde.

    Par contre j'ai un soucis avec mon widget, je me suis inspiré d'exemples, mais il fonctionne bizarrement (pour moi) :

    il a des boutons et lorsque je clique sur un bouton, il réagit instantanément, mais je fais un affichage de temps (différence entre maintenant et l'heure d'un rendez-vous), et là il ne se met pas à jour toutes les minutes comme je l'ai indiqué dans le fichier xml (android:updatePeriodMillis="60000") mais à des périodes plus grandes. J'ai même essayé de mettre "60" mais ça fait la même chose...

    Est-ce que j'ai oublié quelque chose ?

    Voici mon fichier complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="utf-8"?>
     
    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
        android:minWidth="294dip"
        android:minHeight="146dip"
        android:updatePeriodMillis="60000"
        android:initialLayout="@layout/agora_widget_layout"
        android:configure="com.huy.android.AgoraWidgetConfigure"
    />
    Dans ma class widget, j'ai des method :
    - onEnabled
    - onDelete
    - onUpdate (dans laquelle je fais mon calcul et mon affichage)
    - onReceive (dans laquelle je gère mes boutons)

    J'ai l'impression que le système met à jour mon widget quand il "y pense" (pour être précis toutes les 30 mn), mais ne tient pas compte du paramètre updatePeriodMillis.

    C'est grave docteur ?
    Christian
    Nexus 1 sous Cyanogen - Acer A500

  7. #7
    Membre habitué Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Points : 197
    Points
    197
    Par défaut
    J'ai trouvé une explication à ce problème de mise à jour : Google a limité à 30 mn (depuis la version 2.x) au minimum l'intervalle de mise à jour du appWidget... Si on met moins, la valeur utilisée sera de 30 mn !

    Ceci pour un soucis d'autonomie batterie.

    Pour outrepasser cette limitation, il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ComponentName thisWidget = new ComponentName(context, MyWidgetProvider.class); 
    AppWidgetManager manager = AppWidgetManager.getInstance(context);
     
    RemoteViews updateViews = ...... specify new widget state here ......
     
    manager.updateAppWidget(thisWidget, updateViews);
    Christian
    Nexus 1 sous Cyanogen - Acer A500

Discussions similaires

  1. Lancer un programme à partir d'une alerte.
    Par cterra dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 30/07/2008, 20h02
  2. [Débutant] Lancer un programme à partir de perl
    Par Nemmo dans le forum Langage
    Réponses: 5
    Dernier message: 03/06/2006, 13h52
  3. [Système] Lancer un programme externe depuis une page web
    Par needles94000 dans le forum Langage
    Réponses: 2
    Dernier message: 08/02/2006, 21h34
  4. Réponses: 2
    Dernier message: 04/06/2004, 10h36
  5. Lancer un programme, mais sur une autre machine
    Par GOUGOU1 dans le forum Réseau
    Réponses: 12
    Dernier message: 08/12/2002, 20h36

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