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 :

Problème avec INJECT_EVENTS pour les tests de drag and drop


Sujet :

Composants graphiques Android

  1. #1
    Membre confirmé

    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 144
    Points : 645
    Points
    645
    Par défaut Problème avec INJECT_EVENTS pour les tests de drag and drop
    Bonjour,

    je suis en train de m'autoformer à la programmation sur Android en développant une petite application de bataille navale.
    Mon problème se situe dans les tests de mon activité pour le drag and drop, puisque j'obtiens systématiquement l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission
    quand j'exécute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TouchUtils.dragViewTo(this, image, Gravity.CENTER, toX, toY);
    J'ai pourtant ajouter cette permission dans mes manifestes, celui de test et celui de l'application, de manière globale et spécifiquement à l'activity, mais rien n'y fait.

    Voici ma stacktrace de l'erreur :
    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
    java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission
    at android.os.Parcel.readException(Parcel.java:1327)
    at android.os.Parcel.readException(Parcel.java:1281)
    at android.view.IWindowManager$Stub$Proxy.injectPointerEvent(IWindowManager.java:1203)
    at android.app.Instrumentation.sendPointerSync(Instrumentation.java:902)
    at android.test.TouchUtils.drag(TouchUtils.java:778)
    at android.test.TouchUtils.dragViewTo(TouchUtils.java:633)
    at fr.atatorus.android.battle.activity.test.PrepareBattleActivityTest.testDragShip(PrepareBattleActivityTest.java:118)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
    at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
    at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
    at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
    at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
    at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:545)
    at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1551)
    et mon fichier manifeste de test :
    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
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="fr.atatorus.android.battle.test"
        android:versionCode="1"
        android:versionName="1.0" >
     
        <uses-sdk android:minSdkVersion="15" />
     
        <instrumentation
            android:name="android.test.InstrumentationTestRunner"
            android:targetPackage="fr.atatorus.android.battle" />
     
        <uses-permission android:name="android.permission.INJECT_EVENTS" />
     
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <uses-library android:name="android.test.runner" />
     
            <activity
                android:name=".SeaViewTestActivity"
                android:label="@string/app_name" >
            </activity>
            <activity
                android:name=".PrepareBattleActivityTest"
                android:label="@string/app_name" >
            </activity>
        </application>
     
    </manifest>
    Qui peut me dire d'où vient le problème ? Merci.

  2. #2
    Membre expert
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Points : 3 135
    Points
    3 135
    Par défaut
    Je crois avoir lu qu'il faut que ton activity soit bien au premier plan et ton écran déverrouillé pour que touchUtils fonctionne

  3. #3
    Membre confirmé

    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 144
    Points : 645
    Points
    645
    Par défaut
    C'est le cas, enfin je le pense, puisqu'avant de balancer mon TouchUtils.dragViewTo() je fais quelques manips avec sendKeys() sur mon activity pour la mettre dans l'état voulu, et je vois l'interface utilisateur réagir normalement.
    Sinon, peux tu me dire comment vérifier ça ? Merci

  4. #4
    Membre confirmé

    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 144
    Points : 645
    Points
    645
    Par défaut
    Je viens de faire un nouvel essai, en laissant le verrouillage écran sur l'émulateur : j'ai la même exception que sans verrouillage écran.
    MAIS, en «éteignant» l'émulateur, mon test ne plante plus. Il passe pas pour autant (et quelques autres tests ne passent plus également), mais au moins je n'ai plus la SecurityException. Et je n'ai même plus besoin de la permission INJECT_EVENTS ...

    Quelqu'un peut-il m'expliquer ce comportement bizarroïde ?

Discussions similaires

  1. [Dojo] Comment utiliser les events du drag and drop de dojo
    Par Invité dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 03/07/2012, 23h55
  2. Réponses: 0
    Dernier message: 16/05/2010, 20h42
  3. Problème avec IE6 pour les PNG
    Par jord23 dans le forum IE
    Réponses: 0
    Dernier message: 11/02/2009, 09h55
  4. Problème avec ChartFX pour les graphiques
    Par Saten dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/10/2008, 16h41
  5. Réponses: 14
    Dernier message: 15/10/2006, 11h22

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