non lancement d'une activity
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

non lancement d'une activity



  1. #1
    jmlat

    non lancement d'une activity


    ------

    Bonjour.
    j'ai un service qui tourne sur Android et qui doit ouvrir une application.
    Si je lance l'app dans le setup, pas de soucis, elle s'ouvre correctement (voir commentaire en gras dans le code ci dessous).
    si je tente de la lancer à un autre moment elle ne s'ouvre pas (la procédure est bien lancée, j'ai le log, mais le startActivity ne fait rien !)

    Code:
    			@Override
    			protected void setup() throws ConnectionLostException,InterruptedException {
    				led_ = ioio_.openDigitalOutput(IOIO.LED_PIN);
    				sortiesBalance=new DigitalOutput[8];
    				sortiesBalance[1]=ioio_.openDigitalOutput(15,false);//avG
    				sortiesBalance[3]=ioio_.openDigitalOutput(11,false);//avD
    				sortiesBalance[5]=ioio_.openDigitalOutput(7,false);//arD
    				sortiesBalance[7]=ioio_.openDigitalOutput(3,false);//arG
    				sortiesBalance[0]=ioio_.openDigitalOutput(16,false);//sensAvG
    				sortiesBalance[2]=ioio_.openDigitalOutput(12,false);//sensAvD
    				sortiesBalance[4]=ioio_.openDigitalOutput(8,false);//sensArD
    				sortiesBalance[6]=ioio_.openDigitalOutput(4,false);//sensArG
    				sortieVolume=new DigitalOutput[2];
    				sortieVolume[0]=ioio_.openDigitalOutput(13,false);//INC 1
    				sortieVolume[1]=ioio_.openDigitalOutput(14,false);//U/D 1
    				sortiesRelaisHP=ioio_.openDigitalOutput(5,DigitalOutput.Spec.Mode.OPEN_DRAIN,false);
    				DigitalOutput Vcc1=ioio_.openDigitalOutput(42,true);
    				DigitalOutput Vcc2=ioio_.openDigitalOutput(38,true);
    				DigitalOutput CS1=ioio_.openDigitalOutput(41,false);
    				DigitalOutput CS2=ioio_.openDigitalOutput(37,false);
    				contact= ioio_.openDigitalInput(10, DigitalInput.Spec.Mode.PULL_DOWN);// true si le contact est mis
    				in3 = ioio_.openDigitalInput(26, DigitalInput.Spec.Mode.PULL_DOWN);//potaentiometre
    				in2 = ioio_.openDigitalInput(25, DigitalInput.Spec.Mode.PULL_DOWN);//potaentiometre
    				in1 = ioio_.openDigitalInput(24, DigitalInput.Spec.Mode.PULL_UP);//potaentiometre
    				DigitalOutput VccP=ioio_.openDigitalOutput(23,true);// vcc potaentiometre
    				DigitalOutput GndP=ioio_.openDigitalOutput(22,false);// Gnd potaentiometre
    				in1Old=in1.read();
    				in2Old=in2.read();
    				in3Old=in3.read();
    				pauseFile ="/storage/emulated/0/pauseFile.txt";
    				contactFile ="/storage/emulated/0/contactFile.txt";
    				balanceFaderFile ="/storage/emulated/0/balanceFader.txt";
    				serviceEnCours="/storage/emulated/0/serviceEnCours.txt";
    				VolumeSortieFile="/storage/emulated/0/volumeSortie.txt";
    				RelaisHPFile="/storage/emulated/0/relaisHP.txt";
    				valeurBalance=new int[8];
    				volumeLevel = (float)myAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC)/(float)myAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
    				Settings.System.putInt(getBaseContext().getContentResolver(),
    						Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
    				lanceMediaPlayer();      // Cette appel à la procédure fonctionne et l'app est lancée
    			}
    
    			void  lanceMediaPlayer(){
    
    				if (!new File("/storage/emulated/0/AutoradioRunnig.txt").exists() ){
    					Intent intent = new Intent(Intent.ACTION_MAIN);
    					intent.setComponent(new ComponentName("appinventor.ai_jm_latour.MusicPlayer", "appinventor.ai_jm_latour.MusicPlayer.Screen1"));
    					intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    					startActivity(intent);
    					Log.i("DEBUG","lanceMediaPlayer()");     //Je passes bien ici dans les 2 cas
    				}
    			}
    			void verifieContact() throws ConnectionLostException, InterruptedException {
    				if(contact.read()){
    					//led_.write(true);
    					if (!new File(contactFile).exists() ){
    						lanceMediaPlayer();                      // Cette appel à la procédure fonctionne mais l'app n'est pas lancée
    						creeFichierContact();}
    
    				}else 			//supprime  le fichier contact
    					{
    						//led_.write(false);
    					File file=new File(contactFile);
    					if (file.exists()){
    						file.delete();			//suppression du fichier contact pour que le player sache qu'on est débranché
    					}
    				}
    			}
    quelqu'un saurait il où se trouve le problème et ce que je peux faire pour le résoudre ?

    -----

  2. #2
    vgondr98

    Re : non lancement d'une activity

    Tu as accès au code de startActivity() ? Et peux-tu mettre des logs dans cette fonction ?

  3. #3
    jmlat

    Re : non lancement d'une activity

    Si tu veux parler de l'app que je veux lancer, oui, c'est une app écrite sur app inventor que je peux modifier, mais elle n'est pas lancée alors je ne vois pas où tu veux en venir !

  4. #4
    umfred

    Re : non lancement d'une activity

    ton application est censé pouvoir s'ouvrir en plusieurs sessions ?

  5. A voir en vidéo sur Futura
  6. #5
    jmlat

    Re : non lancement d'une activity

    oui à priori, les app dévelloppées sur App Inventor peuvent s'ouvrir sur plusieurs sessions...

  7. #6
    vgondr98

    Re : non lancement d'une activity

    Citation Envoyé par jmlat Voir le message
    mais elle n'est pas lancée
    Tu en es vraiment sûr ? Il est possible que ton application soit exécutée et que l'erreur est lieu dans cette application.

  8. #7
    umfred

    Re : non lancement d'une activity

    Citation Envoyé par jmlat Voir le message
    oui à priori, les app dévelloppées sur App Inventor peuvent s'ouvrir sur plusieurs sessions...
    il faut sans doute leur préciser aussi. à voir si c'est le cas
    (en fait, le terme exact est plusieurs instances ^^ my bad)

  9. #8
    jmlat

    Re : non lancement d'une activity

    Oui j'en suis sûr: j'arrive à lancer plusieurs instances de ce programme. il joue une musique, et si je le lance plusieurs fois le morceau est joué plusieurs fois en décalé.

  10. #9
    jmlat

    Re : non lancement d'une activity

    Tu en es vraiment sûr ? Il est possible que ton application soit exécutée et que l'erreur est lieu dans cette application.
    Pour vérifier. j'ai créé une toute petite app (Just_Start_Player) qui n'a comme rôle que de lancer "MediaPlayer"
    quand j'ouvre "Just_Start_Player", dans la foulée MediaPlyer s'ouvre.

    à nouveau si je place "Just_Start_Player dans le setup de mon service, celle ci s'ouvre et ouvre MediaPlayer.
    si je la place dans la procédure "verifieContact" elle n'est pas lancée...Il semble que je ne puisses pas ouvrir une app à partir de cette procedure !

    Code:
    			//lanceMediaPlayer();          
    				//justStartPlayer()
    			}                                    FIN DU SETUP
    
    			void  lanceMediaPlayer(){
    
    				if (!new File("/storage/emulated/0/AutoradioRunnig.txt").exists() ){
    					Intent intent = new Intent(Intent.ACTION_MAIN);
    					intent.setComponent(new ComponentName("appinventor.ai_jm_latour.MusicPlayer", "appinventor.ai_jm_latour.MusicPlayer.Screen1"));
    					intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    					startActivity(intent);
    					Log.i("DEBUG","lanceMediaPlayer()");
    				}
    			}
    			void  justStartPlayer(){
    					Intent intent = new Intent(Intent.ACTION_MAIN);
    					intent.setComponent(new ComponentName("com.jmlat.Just_Start_Player", "com.jmlat.Just_Start_Player.Screen1"));
    					intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    					startActivity(intent);                                 //De nouveau n'est pas lancé
    					Log.i("DEBUG","Just_Start_Player");
    
    			}
    			void verifieContact() throws ConnectionLostException, InterruptedException {
    				if(contact.read()){
    					//led_.write(true);
    					if (!new File(contactFile).exists() ){
    						lanceMediaPlayer();
    						justStartPlayer();			//pour test 
    						creeFichierContact();}
    Dernière modification par jmlat ; 04/05/2021 à 12h14.

  11. #10
    umfred

    Re : non lancement d'une activity

    je me demande si il ne faudrait pas précéder startActivity par getContext() ?=> getContext().startActivity(int ent);

  12. #11
    jmlat

    Re : non lancement d'une activity

    Je n'ai pas accès à getContext().
    j'ai donc essayé getBaseContext().startActivity (intent); mais sans plus de résultat

  13. #12
    umfred

    Re : non lancement d'une activity

    tu as essayé Intent.ACTION_VIEW en paramètre du nouveau intent ?

  14. #13
    jmlat

    Re : non lancement d'une activity

    Bon j'ai trouvé le problème.
    Comme j'essaie de lancer une application à partir d'un service, j'ai besoin d'une permission paticulière: SYSTEM_ALERT_WINDOW
    sans celle ci, le service est capable d'ouvrir une app si il a démarré il y a peu ( c'est pour ça que quand mon instruction est dans le Setup ça fonctionne) mais ce n'est plus possible si le service a été démarré depuis un bout de temps.
    cette permission doit donc etre dans le setup. par contre il est necessaire de l'autoriser manuellement.

Discussions similaires

  1. The sun activity 10/27/2013
    Par lebribri dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 2
    Dernier message: 27/10/2013, 19h07
  2. [Biochimie] Hydroxyl radical scavenging activity
    Par feten_b dans le forum Biologie
    Réponses: 0
    Dernier message: 15/05/2013, 00h18
  3. [Biochimie] H+/D+ exchange activity
    Par invite2bdabc31 dans le forum Biologie
    Réponses: 1
    Dernier message: 09/10/2009, 19h11
  4. Différence Lancement Navette/lancement Ariane ?
    Par invitef1f93b74 dans le forum Astronautique
    Réponses: 11
    Dernier message: 01/05/2009, 11h39
  5. 3' addition activity ???
    Par invitee682e001 dans le forum Biologie
    Réponses: 4
    Dernier message: 17/11/2006, 16h12