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 :

Gérer l'absence de données EXTRA_STREAM en Intent ?


Sujet :

Android

  1. #1
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 386
    Points : 859
    Points
    859
    Par défaut Gérer l'absence de données EXTRA_STREAM en Intent ?
    Bonjour,

    Je n'arrive pas à gérer le cas où mon application n'a pas de flux stream (une image envoyée de la galerie par exemple) dans l'intent d'entrée de mon application.

    Est-ce ma syntaxe du If qui est mauvaise ou bien il y a autre chose qui coince ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // recuperation image externe à l'application -------------------------------------------------------------------------------
             ImageView iv = (ImageView) findViewById(R.id.maphoto);
             if (getIntent()!=null & getIntent().getExtras()!=null & getIntent().getExtras().get(Intent.EXTRA_STREAM)!=null)
             {
                 iv.setImageURI((Uri) getIntent().getExtras().get(Intent.EXTRA_STREAM));
             }
    Merci de vos conseils

  2. #2
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 592
    Points : 18 498
    Points
    18 498
    Par défaut
    Je crois que tu devrais mettre && et pas &.

    Et là tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(getIntent().getExtras().get(Intent.EXTRA_STREAM)!=null){
     
    }
    Ça devrait passer.
    Keith Flint 1969 - 2019

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    & est un ET binaire, ou ET bit à bit.
    && est un ET logique, qui effectue un ET entre 2 conditions.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  4. #4
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 386
    Points : 859
    Points
    859
    Par défaut
    Citation Envoyé par thierrybenji Voir le message
    Je crois que tu devrais mettre && et pas &.

    Et là tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(getIntent().getExtras().get(Intent.EXTRA_STREAM)!=null){
     
    }
    Ça devrait passer.
    merci pour le && c'était bien cela (erreur grossière quand on pratique plusieurs langage....)

    par contre ton if(getIntent().getExtras().get(Intent.EXTRA_STREAM)!=null n'est pas suffisant pour gérer mon cas, je dois utiliser le test complet des deux opérandes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (getIntent()!=null && getIntent().getExtras()!=null && getIntent().getExtras().get(Intent.EXTRA_STREAM)!=null)
    java fait comme en php quand on fait (si a et b) , c-a-d que b n'est pas évalué si a est déjà faut.

  5. #5
    Membre extrêmement actif
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    9 592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9 592
    Points : 18 498
    Points
    18 498
    Par défaut
    Je sais très bien qu'on arrête dès qu'une condition est fausse avec &&.
    C'est comme a || b si a est vrai on ne test pas b.
    Donc a && b si a est faux on ne test pas b.

    Mais là faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getIntent().getExtras().get(Intent.EXTRA_STREAM)
    Ça produit une erreur si c'est null ?
    Parce que si ce n'est pas le cas les 2 tests précédents ne servent à rien.
    Keith Flint 1969 - 2019

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    En même temps il y a la fonction "hasExtra" sur les Intent....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Intent intent =  .... ;
     
    if (intent.hasExtra(Intent.EXTRA_STREAM)) {
       ....setUrl((Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM));
    }
    En plus une Uri étant un parcelable, il faut utiliser la fonction getParcelable (et non get tout court).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 386
    Points : 859
    Points
    859
    Par défaut
    Citation Envoyé par nicroman Voir le message
    En plus une Uri étant un parcelable, il faut utiliser la fonction getParcelable (et non get tout court).
    je ne comprends pas (car ça fonctionne bien sans ça)

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Je n'ai pas dis que ça ne marchait pas...
    Un effet de bord ? Un cas particulier ?
    C'est un peu comme les divisions en informatique... Ça marche, jusqu'à *la* fois ou cela ne marche plus...

    En tout cas... un simple google-search sur EXTRA_STREAM m'indique que la documentation est sans équivoque:
    http://developer.android.com/referen...l#EXTRA_STREAM
    "A content: URI holding a stream of data associated with the Intent"
    et
    http://developer.android.com/referen...d/net/Uri.html
    implements Parcelable

    Et surtout les exemples donnés sur leur utilisation utilisent bien getParcelable() !
    http://developer.android.com/trainin...g/receive.html
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.0] Absence de données
    Par Sadneth dans le forum ASP.NET
    Réponses: 1
    Dernier message: 13/03/2007, 17h29
  2. [JXTable]Gérer tri + accès aux données ?
    Par Baptiste Wicht dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 29/05/2006, 13h24
  3. Réponses: 9
    Dernier message: 03/03/2006, 10h02
  4. [PDO] Utiliser l'Objet de PHP pour gérer sa base de données
    Par Viau dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/01/2006, 18h16
  5. gérer une base de donnée MySql via C++
    Par thiane dans le forum Bibliothèques
    Réponses: 9
    Dernier message: 19/05/2005, 16h19

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