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 :

Création d'activité Android


Sujet :

Android

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut Création d'activité Android
    Bonjour,

    J'ai suivi les tutoriels pour la création d'application Java sous Android, et je viens vers vous un peut en désespoir de cause.

    Je m'explique : j'ai essayé de créer une petite application qui permette de faire une copie d'une photo depuis l'appareil photo de l'appareil Android vers un répertoire partagé sur un serveur.

    Le souci, c'est que mon activité n'a pas l'air de se lancer au démarrage et je désespère un peut d'y arriver un jour.

    Je pourrais vous poster mon source dès lundi si vous le souhaitez.

    Pourriez-vous m'aider s'il vous plait ?

    Par avance je vous remercies.

    Marco.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Citation Envoyé par cotmar Voir le message
    Pourriez-vous m'aider s'il vous plait ?
    Evidemment, ce forum est fait pour ça.
    Cependant, il nous faut plus d'informations sur l'erreur (code source, message d'erreur, logcat, stacktrace, ...)
    Alors à lundi

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonjour,

    Merci de cette réponse si rapide et amicale.

    Je donnerais en effet plus détails.
    En attendant je peux juste apporter un ou deux petites précisions à ma demande.

    Je travailles sous Eclipse avec le bundle ADT.

    Pour ce qui est du projet, il s'agit d'un nouveau projet Android que j'ai créé pour l'occasion.

    J'ai tout d'abord créé le projet dans le "onCreate" puis j'ai mis dans le "onResume" de mon activity, mais dans l'un et l'autre cas, lorsque je le lance sur le téléphone (Run as -> Android project -> le téléphone dans la liste connecté via USB), rien ne se passe et au bout d'un moment j'ai un message "l'application s'est arrêtée".

    Je rajouteras l'application dans le post de lundi tu as raison.

    Peux tu me dire ce que signifie "stacktrace" et "logcat" s'il te plait ?

    Par avance merci.

    Marco.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    La stackTrace correspond à une description de l'erreur générée par le système.
    Le logcat est un utilitaire qui permet de visualiser le "journal d'évènements" du système.
    Ce logcat te permettra d'afficher et de lire la stacktrace correspondant à ton erreur. Le logcat peut être affiché depuis eclipse : Window->Show View->Logcat

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Merci de ta réponse.

    En fait pour tout te dire, je sais que rien ne se passe car le fichier que j'essaye de copier n’apparaît pas dans le répertoire ciblé, pas plus au niveau du réseau que (plus modestement) sur un répertoire local. Je montrerais le source lundi, mais d'ors et déjà, je peux dire que j'ai mis les méthodes de copie dans une classe à part.

    Du coup, je ne pense pas que ça puisse être un problème de droits insuffisants comme a pu me le dire une collègue.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonjour,

    Voici donc le source promis ce weekend en espérant que vous pourrez m'aider.

    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
     
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.copyfile"
        android:versionCode="1"
        android:versionName="1.0" >
     
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />
     
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.copyfile.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
     
    </manifest>
    Et le code source de mon activité :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
     
    package com.example.copyfile;
     
    import java.io.File;
     
    import android.os.Bundle;
    import android.os.Environment;
    import android.os.Message;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.Dialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.view.Menu;
    import android.widget.Toast;
     
    public class MainActivity extends Activity {
     
     
     
    	@Override
    	protected void onResume() {
    		// TODO Auto-generated method stub
    		super.onResume();
     
    		Context context = getApplicationContext();
    		CharSequence text = "Hello toast!";
    		int duration = Toast.LENGTH_SHORT;
     
    		Toast toast = Toast.makeText(context, text, duration);
    		toast.show();
     
     
    		//Préparation de la copie
    		FileUtils fu = new FileUtils();
    //		System.out.println(Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Camera/20130328_183059.jpg");
    		File source = new File (Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Camera/20130328_183059.jpg") ;
     
     
    		fu.copyFile(source, dest1);
    //		fu.copyFilePartage(source, dest);
    //		//Exécution de la copie RESEAU
    //		if(fu.copyFilePartage(source, dest)){
    //			builder.setMessage("Copie terminée... SUCCES");
    //			dialog = builder.create();
    //			dialog.show();
    //		}
    //		else{
    //			builder.setMessage("Copie terminée... ECHEC");
    //			dialog = builder.create();
    //			dialog.show();
    //		}
    	}
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    	}
     
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
     
    }

    Comme vous le voyez, j'ai essayé avec une copie locale et une copie sur un disque réseau.

    La classe dans laquelle j'ai regroupé ce qui est nécessaire à la copie est la suivante :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
     
    package com.example.copyfile;
     
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    import jcifs.smb.SmbFileOutputStream;
     
    public class FileUtils {
    	/** Copie le fichier source vers le fichier résultat (réseau)
            * Utiliser une librairie spécifique pour le protocole SMB.
            * Inclure la librairie jcifs-1.3.16(ici .17) dans votre projet.
            */
     
    	private File source;
    	private File dest;
     
    	public File getSource() {
    		return source;
    	}
     
    	public void setSource(File source) {
    		this.source = source;
    	}
     
    	public File getDest() {
    		return dest;
    	}
     
    	public void setDest(File dest) {
    		this.dest = dest;
    	}
     
    	public static boolean copyFilePartage(File source, File dest){
    		if(dest == null)
    			return false;
     
    		try{
    			// Declaration et ouverture des flux	
    			java.io.FileInputStream sourceFile = new java.io.FileInputStream(source);
    			SmbFileOutputStream destinationFile = new SmbFileOutputStream("smb://"+dest.getPath()+"/"+source.getName());
     
    			// Lecture par segment de 0.5Mo 
    			byte buffer[] = new byte[512 * 1024];
    			int nbLecture;
     
    			while ((nbLecture = sourceFile.read(buffer)) != -1){
    				destinationFile.write(buffer, 0, nbLecture);
    			}
     
    			sourceFile.close();
     
    		} catch (Exception e){
    			e.printStackTrace();
    			return false; // Erreur
    		}
     
    		return true; // Résultat OK  
    	}
     
    	/** Copie le fichier source dans le fichier resultat (locale)
             * Retourne vrai si cela réussit
             * Pour comparaison avec le précédent
             */
    	public static boolean copyFile(File source, File dest){
    		try{
    			// Declaration et ouverture des flux en entrée
    			java.io.FileInputStream sourceFile = new java.io.FileInputStream(source);
     
    			try{
    				java.io.FileOutputStream destinationFile = null;
     
    				try{
    					// Destination et ouverture des flux en sortie
    					destinationFile = new FileOutputStream(dest);
     
    					// Lecture par segment de 0.5Mo 
    					byte buffer[] = new byte[512 * 1024];
    					int nbLecture;
     
    					while ((nbLecture = sourceFile.read(buffer)) != -1){
    						destinationFile.write(buffer, 0, nbLecture);
    					}
    				} finally {
    					destinationFile.close();
    				}
    			} finally {
    				sourceFile.close();
    			}
    		} catch (IOException e){
    			e.printStackTrace();
    			return false; // Erreur
    		}
     
    		return true; // Résultat OK  
    	}
     
     
    }

    A toutes et tous je souhaite un très bon début de semaine, en espérant que vous pourrez m'aider. C'est surement bête comme erreur, mais je sèche complètement.

    Cordialement,
    Marco.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    En complément de mon message précédent,

    Je lance donc par un "run as" vers un téléphone Samsung galaxy SII :

    Sur la console j'obtiens le résultat suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    [2013-07-15 10:45:47 - CopyFile] ------------------------------
    [2013-07-15 10:45:47 - CopyFile] Android Launch!
    [2013-07-15 10:45:47 - CopyFile] adb is running normally.
    [2013-07-15 10:45:47 - CopyFile] Performing com.example.copyfile.MainActivity activity launch
    [2013-07-15 10:45:47 - CopyFile] Automatic Target Mode: Unable to detect device compatibility. Please select a target device.
    [2013-07-15 10:45:51 - CopyFile] Application already deployed. No need to reinstall.
    [2013-07-15 10:45:51 - CopyFile] Starting activity com.example.copyfile.MainActivity on device 0019647c36d87e
    [2013-07-15 10:45:52 - CopyFile] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.copyfile/.MainActivity }
    Et dans le LogBat :

    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
     
     
    07-15 10:42:07.284: D/dalvikvm(4300): Late-enabling CheckJNI
    07-15 10:42:07.319: D/dalvikvm(4300): Debugger has detached; object registry had 1 entries
    07-15 10:42:07.574: D/AndroidRuntime(4300): Shutting down VM
    07-15 10:42:07.574: W/dalvikvm(4300): threadid=1: thread exiting with uncaught exception (group=0x40c351f8)
    07-15 10:42:07.579: E/AndroidRuntime(4300): FATAL EXCEPTION: main
    07-15 10:42:07.579: E/AndroidRuntime(4300): java.lang.RuntimeException: Unable to resume activity {com.example.copyfile/com.example.copyfile.MainActivity}: java.lang.NullPointerException
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2456)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2484)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1998)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at android.app.ActivityThread.access$600(ActivityThread.java:127)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at android.os.Looper.loop(Looper.java:137)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at android.app.ActivityThread.main(ActivityThread.java:4507)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at java.lang.reflect.Method.invokeNative(Native Method)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at java.lang.reflect.Method.invoke(Method.java:511)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at dalvik.system.NativeStart.main(Native Method)
    07-15 10:42:07.579: E/AndroidRuntime(4300): Caused by: java.lang.NullPointerException
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at com.example.copyfile.FileUtils.copyFile(FileUtils.java:90)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at com.example.copyfile.MainActivity.onResume(MainActivity.java:59)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1157)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at android.app.Activity.performResume(Activity.java:4539)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2446)
    07-15 10:42:07.579: E/AndroidRuntime(4300): 	... 12 more
    07-15 10:42:33.564: I/Process(4300): Sending signal. PID: 4300 SIG: 9

  8. #8
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    Bonjour,

    Dans le onCreate il y besoin de charger au moins une vue non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setContentView(R.layout.activity_main)
    ?

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonjour,

    Merci de ta réponse. Je viens de tester et apparemment j'ai toujours le même problème.

    En fait je totalement nouveau dans le développement Android et il se pourrait que j'ai pas mal de soucis.

    Une autre idée ?

  10. #10
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    Ok (ton xml s'appel bien activity_main au moins ?) sinon il me semble que tu doives ajouter des permissions dans ton manifest lors de lecture ou écriture de fichier : http://developer.android.com/trainin...age/files.html

  11. #11
    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
    L'erreur est une NullPointerException, pas un problème de permission (du moins, pour le moment).

    Il y a, à un moment, une invocation de méthode sur un objet null (ou un objet null passé en paramètre) => Caused by: java.lang.NullPointerException
    Comme l'indique l'erreur, cela se trouve dans la classe FileUtils, dans la méthode copyFile, aux alentours de la ligne 90, comme l'indique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    at com.example.copyfile.FileUtils.copyFile(FileUtils.java:90)
    Le code de ta MainActivity est bizarre... tu invoques FileUtils#copyFile avec fu.copyFile(source, dest1);, mais la variable dest1 n'est pas déclarée. Ton code ne devrait même pas compiler.

    Pour Android, remplace les "e.printStackTrace()" qui peuvent finir on ne sait où par des Log.e(TAG, "mon message d'erreur", exception).
    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

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonsoir,

    Alors j'avance tout doucement... Merci de votre aide.
    Je fais du ménage dans mon code et je

    Mon Mainactivity :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    package com.example.copyfile;
     
    import java.io.File;
     
    import android.os.Bundle;
    import android.os.Environment;
    import android.os.Message;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.Dialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.view.Menu;
    import android.widget.Toast;
     
    public class MainActivity extends Activity {
     
     
     
    	@Override
    	protected void onResume() {
    		// TODO Auto-generated method stub
    		super.onResume();
    		Context context = getApplicationContext();
     
    		CharSequence text = "Hello toast!";
    		int duration = 999999999;//Toast.LENGTH_LONG;
    		Toast toast = Toast.makeText(context, text, duration);
     
    		//Préparation de la copie
    		FileUtils fu = new FileUtils();
     
    		File source = new File (Environment.getExternalStorageDirectory().getAbsolutePath() + "/sdcard/DCIM/Camera/1325000166049.jpg") ;
    		fu.setSource(source);
    		File dest1 = new File ("C:\\Documents and Settings\\mcotte\\Mes documents\\Marc");
    		fu.setDest(dest1);
     
    		text = "Fin de copie!"+fu.toString();
    		toast = Toast.makeText(context, text, duration);
    		toast.show();
     
    		fu.copyFile(source, dest1); 
     
    	}
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    	}
     
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
     
    }

    Ma classe FileUtility :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
     
     
    package com.example.copyfile;
     
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    import android.app.Activity;
    import android.app.Application;
    import android.app.ApplicationErrorReport;
    import android.content.Context;
    import android.util.AndroidException;
    import android.widget.Toast;
     
    import jcifs.smb.SmbFileOutputStream;
     
    public class FileUtils {
    	/** Copie le fichier source vers le fichier résultat (réseau)
            * Utiliser une librairie spécifique pour le protocole SMB.
            * Inclure la librairie jcifs-1.3.16(ici .17) dans votre projet.
            */
     
    	private File source;
    	private File dest;
     
    	public File getSource() {
    		return source;
    	}
     
    	public void setSource(File source) {
    		this.source = source;
    	}
     
    	public File getDest() {
    		return dest;
    	}
     
    	public void setDest(File dest) {
    		this.dest = dest;
    	}
     
    	@Override
    	public String toString() {
    		return "FileUtils [/n source=" + source + ",/n dest=" + dest + "]";
    	}
     
    	public static boolean copyFilePartage(File source, File dest) throws IOException, AndroidException {
    		if(dest == null)
    			return false;
     
    		java.io.FileInputStream sourceFile = new java.io.FileInputStream(source);
    		SmbFileOutputStream destinationFile = new SmbFileOutputStream("smb://"+dest.getPath()+"/"+source.getName());
     
    		try{
    			// Declaration et ouverture des flux	
    //			java.io.FileInputStream sourceFile = new java.io.FileInputStream(source);
    //			SmbFileOutputStream destinationFile = new SmbFileOutputStream("smb://"+dest.getPath()+"/"+source.getName());
     
    			// Lecture par segment de 0.5Mo 
    			byte buffer[] = new byte[512 * 1024];
    			int nbLecture;
     
    			while ((nbLecture = sourceFile.read(buffer)) != -1){
    				destinationFile.write(buffer, 0, nbLecture);
    			}
     
    			sourceFile.close();
     
    		}catch (Exception e){
    			e.printStackTrace();
     
    			return false; // Erreur
    		}finally{
    			sourceFile.close();
    			destinationFile.close();
    		}
     
     
    		return true; // Résultat OK  
    	}
     
    	/** Copie le fichier source dans le fichier resultat (locale)
             * Retourne vrai si cela réussit
             * Pour comparaison avec le précédent
             */
    	public static boolean copyFile(File source, File dest){
    		try{
    			// Declaration et ouverture des flux en entrée
    			java.io.FileInputStream sourceFile = new java.io.FileInputStream(source);
     
    			try{
    				java.io.FileOutputStream destinationFile = null;
     
    				try{
    					// Destination et ouverture des flux en sortie
    					destinationFile = new FileOutputStream(dest);
     
    					// Lecture par segment de 0.5Mo 
    					byte buffer[] = new byte[512 * 1024];
    					int nbLecture;
     
    					while ((nbLecture = sourceFile.read(buffer)) != -1){
    						destinationFile.write(buffer, 0, nbLecture);
    					}
    				} catch (Exception e){
    					e.printStackTrace();
    					CharSequence text = e.getMessage().toString() ;//"Hello toast!";
    					int duration = Toast.LENGTH_LONG;
    					Context context = null;
    					Toast toast = Toast.makeText(context, text, duration);
    					toast.show();
     
    					return false; // Erreur
    				}finally {
    					destinationFile.close();
    				}
    			} catch (Exception e){
    				e.printStackTrace();
    				CharSequence text = e.getMessage().toString() ;//"Hello toast!";
    				int duration = Toast.LENGTH_LONG;
    				Context context = null;
    				Toast toast = Toast.makeText(context, text, duration);
    				toast.show();
     
    				return false;
    			}finally { // Erreur
    				sourceFile.close();
    			}
    		} catch (IOException e){
    			e.printStackTrace();
    			return false; // Erreur
    		}
     
    		return true; // Résultat OK  
    	}
     
    	/** 
            *
            */
    	public static void listeRepertoire ( File repertoire ) {
    	        System.out.println ( repertoire.getAbsolutePath());
     
    	        if ( repertoire.isDirectory ( ) ) {
    	                File[] list = repertoire.listFiles();
    	                if (list != null){
    		                for ( int i = 0; i < list.length; i++) {
    		                        // Appel récursif sur les sous-répertoires
    		                        listeRepertoire( list[i]);
    		                } 
    	                } else {
    	                	System.err.println(repertoire + " : Erreur de lecture.");
    	                }
    	        } 
    	} 
     
    	/**
            * ToDo : Classe à terminer
             * @throws IOException 
            */
    	public static boolean deplacerPartage(File source,File destination) {
    	        if( !destination.exists() ) {
    	                // On essaye avec renameTo
    	                boolean result = source.renameTo(destination);
    	                if( !result ) {
    	                        // On essaye de copier
    	                        result = true;
    	                        //A revoir l'implémentation (copie réseau ou locale)
    //	                        result &= copier(source,destination);
    	                        try {
    								result &= copyFilePartage(source,destination);
    							} catch (IOException e) {
    								// TODO Auto-generated catch block
    								e.printStackTrace();
    							} catch (AndroidException e) {
    								// TODO Auto-generated catch block
    								e.printStackTrace();
    							}
    	                        if(result) result &= source.delete();
     
    	                } return(result);
    	        } else {
    	                // Si le fichier destination existe, on annule ...
    	                return(false);
    	        } 
    	} 
     
    	/**
            *
            */
    	static public boolean deleteDirectory(File path) { 
    	        boolean resultat = true; 
     
    	        if( path.exists() ) { 
    	                File[] files = path.listFiles(); 
    	                for(int i=0; i<files.length; i++) { 
    	                        if(files[i].isDirectory()) { 
    	                                resultat &= deleteDirectory(files[i]); 
    	                        } 
    	                        else { 
    	                        resultat &= files[i].delete(); 
    	                        } 
    	                } 
    	        } 
    	        resultat &= path.delete(); 
    	        return( resultat ); 
    	} 
     
     
    }

    La Console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    [2013-07-15 13:58:25 - CopyFile] ------------------------------
    [2013-07-15 13:58:25 - CopyFile] Android Launch!
    [2013-07-15 13:58:25 - CopyFile] adb is running normally.
    [2013-07-15 13:58:25 - CopyFile] Performing com.example.copyfile.MainActivity activity launch
    [2013-07-15 13:58:25 - CopyFile] Automatic Target Mode: Unable to detect device compatibility. Please select a target device.
    [2013-07-15 13:58:28 - CopyFile] Uploading CopyFile.apk onto device '4df78d2f57d0bfc7'
    [2013-07-15 13:58:28 - CopyFile] Installing CopyFile.apk...
    [2013-07-15 13:58:38 - CopyFile] Success!
    [2013-07-15 13:58:38 - CopyFile] Starting activity com.example.copyfile.MainActivity on device 4df78d2f57d0bfc7
    [2013-07-15 13:58:39 - CopyFile] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.copyfile/.MainActivity }

    Le LogCat :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
     
    07-15 13:58:39.338: W/System.err(3706): java.io.FileNotFoundException: /storage/sdcard0/sdcard/DCIM/Camera/1325000166049.jpg: open failed: ENOENT (No such file or directory)
    07-15 13:58:39.343: W/System.err(3706): 	at libcore.io.IoBridge.open(IoBridge.java:416)
    07-15 13:58:39.343: W/System.err(3706): 	at java.io.FileInputStream.<init>(FileInputStream.java:78)
    07-15 13:58:39.343: W/System.err(3706): 	at com.example.copyfile.FileUtils.copyFile(FileUtils.java:88)
    07-15 13:58:39.343: W/System.err(3706): 	at com.example.copyfile.MainActivity.onResume(MainActivity.java:42)
    07-15 13:58:39.343: W/System.err(3706): 	at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1199)
    07-15 13:58:39.343: W/System.err(3706): 	at android.app.Activity.performResume(Activity.java:5280)
    07-15 13:58:39.343: W/System.err(3706): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2606)
    07-15 13:58:39.343: W/System.err(3706): 	at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2644)
    07-15 13:58:39.343: W/System.err(3706): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2130)
    07-15 13:58:39.348: W/System.err(3706): 	at android.app.ActivityThread.access$600(ActivityThread.java:140)
    07-15 13:58:39.348: W/System.err(3706): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
    07-15 13:58:39.348: W/System.err(3706): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    07-15 13:58:39.348: W/System.err(3706): 	at android.os.Looper.loop(Looper.java:137)
    07-15 13:58:39.348: W/System.err(3706): 	at android.app.ActivityThread.main(ActivityThread.java:4898)
    07-15 13:58:39.348: W/System.err(3706): 	at java.lang.reflect.Method.invokeNative(Native Method)
    07-15 13:58:39.348: W/System.err(3706): 	at java.lang.reflect.Method.invoke(Method.java:511)
    07-15 13:58:39.348: W/System.err(3706): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
    07-15 13:58:39.348: W/System.err(3706): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
    07-15 13:58:39.348: W/System.err(3706): 	at dalvik.system.NativeStart.main(Native Method)
    07-15 13:58:39.348: W/System.err(3706): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
    07-15 13:58:39.353: W/System.err(3706): 	at libcore.io.Posix.open(Native Method)
    07-15 13:58:39.353: W/System.err(3706): 	at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
    07-15 13:58:39.353: W/System.err(3706): 	at libcore.io.IoBridge.open(IoBridge.java:400)
    07-15 13:58:39.353: W/System.err(3706): 	... 18 more
    07-15 13:58:39.493: D/libEGL(3706): loaded /system/lib/egl/libEGL_mali.so
    07-15 13:58:39.503: D/libEGL(3706): loaded /system/lib/egl/libGLESv1_CM_mali.so
    07-15 13:58:39.513: D/libEGL(3706): loaded /system/lib/egl/libGLESv2_mali.so
    07-15 13:58:39.523: D/(3706): Device driver API match
    07-15 13:58:39.523: D/(3706): Device driver API version: 10
    07-15 13:58:39.523: D/(3706): User space API version: 10 
    07-15 13:58:39.523: D/(3706): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Tue Oct 16 15:37:13 KST 2012 
    07-15 13:58:39.608: D/OpenGLRenderer(3706): Enabling debug mode 0
    07-15 13:58:50.373: W/System.err(3706): java.io.FileNotFoundException: /storage/sdcard0/sdcard/DCIM/Camera/1325000166049.jpg: open failed: ENOENT (No such file or directory)
    07-15 13:58:50.373: W/System.err(3706): 	at libcore.io.IoBridge.open(IoBridge.java:416)
    07-15 13:58:50.373: W/System.err(3706): 	at java.io.FileInputStream.<init>(FileInputStream.java:78)
    07-15 13:58:50.373: W/System.err(3706): 	at com.example.copyfile.FileUtils.copyFile(FileUtils.java:88)
    07-15 13:58:50.388: W/System.err(3706): 	at com.example.copyfile.MainActivity.onResume(MainActivity.java:42)
    07-15 13:58:50.388: W/System.err(3706): 	at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1199)
    07-15 13:58:50.388: W/System.err(3706): 	at android.app.Activity.performResume(Activity.java:5280)
    07-15 13:58:50.388: W/System.err(3706): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2606)
    07-15 13:58:50.388: W/System.err(3706): 	at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2644)
    07-15 13:58:50.388: W/System.err(3706): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269)
    07-15 13:58:50.388: W/System.err(3706): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    07-15 13:58:50.388: W/System.err(3706): 	at android.os.Looper.loop(Looper.java:137)
    07-15 13:58:50.388: W/System.err(3706): 	at android.app.ActivityThread.main(ActivityThread.java:4898)
    07-15 13:58:50.388: W/System.err(3706): 	at java.lang.reflect.Method.invokeNative(Native Method)
    07-15 13:58:50.388: W/System.err(3706): 	at java.lang.reflect.Method.invoke(Method.java:511)
    07-15 13:58:50.388: W/System.err(3706): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
    07-15 13:58:50.388: W/System.err(3706): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
    07-15 13:58:50.388: W/System.err(3706): 	at dalvik.system.NativeStart.main(Native Method)
    07-15 13:58:50.388: W/System.err(3706): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
    07-15 13:58:50.388: W/System.err(3706): 	at libcore.io.Posix.open(Native Method)
    07-15 13:58:50.388: W/System.err(3706): 	at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
    07-15 13:58:50.393: W/System.err(3706): 	at libcore.io.IoBridge.open(IoBridge.java:400)
    07-15 13:58:50.393: W/System.err(3706): 	... 16 more
    07-15 13:59:23.404: W/IInputConnectionWrapper(3706): getSelectedText on inactive InputConnection
    07-15 13:59:23.404: W/IInputConnectionWrapper(3706): setComposingText on inactive InputConnection
    07-15 13:59:23.404: W/IInputConnectionWrapper(3706): getExtractedText on inactive InputConnection
    07-15 13:59:29.004: W/IInputConnectionWrapper(3706): showStatusIcon on inactive InputConnection
    A tout de suite.

    Marci de votre aide.

    Marco.

  13. #13
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    Alors déjà le chemin de ton fichier sur la sdcard n'est visiblement pas bon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    07-15 13:58:39.338: W/System.err(3706): java.io.FileNotFoundException: /storage/sdcard0/sdcard/DCIM/Camera/1325000166049.jpg: open failed: ENOENT (No such file or directory)
    Corrige cette ligne du coup :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		File source = new File (Environment.getExternalStorageDirectory().getAbsolutePath() + "/sdcard/DCIM/Camera/1325000166049.jpg") ;

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Alors j'avance un peut. Merci Katze.

    Il semblerait que maintenant il ne trouve pas le fichier destination.
    Pour simplifier les choses et les tests j'ai mis : sur "C:toto.jpg"

    Pour le moment j'essaye de copier via un cable USB et le problème c'est que au final il me donne systématiquement : "/C:/toto.jpg" et il plante dessus car il dit qu'il ne connaît pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    07-15 15:57:52.221: W/System.err(7362): java.io.FileNotFoundException: /C:/toto.jpg: open failed: ENOENT (No such file or directory)

  15. #15
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    Alors du coup : http://stackoverflow.com/questions/1...-failed-enoent

    Aide toi de ce site il y a souvent les réponses que tu cherches, c'est l'une des principales sources pour Android, sinon il y a biensûr : http://developer.android.com/guide/c...nts/index.html.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Oups. Merci de ta réponse Katze.

    Bon après un point avec le responsable du projet, ils ne veulent finalement pas de la connexion en USB, mais via le WiFi vers un serveur accessible via le protocole SAMBA.

  17. #17
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    Il cherche la difficulté , non en fait c'est pas trop grave, du coup il va te falloir ajouter les permissions dans le manifest relatives a INTERNET il me semble sinon pour la connexion à une BDD je n'ai jamais fais donc je ne pourrais pas t'aider la dessus.

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonjour Katze et les autres amis,

    En fait il n'y a pas d'accès à une BDD, mais juste une question de copie depuis le téléphone Android vers un répertoire monté via Samba.

    Voici le message d'erreur que j'obtiens... Peux de temps après j'ai une fatal Exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    07-16 12:02:25.873: W/dalvikvm(10605): Exception Landroid/os/NetworkOnMainThreadException; thrown while initializing Ljcifs/netbios/NbtAddress;
    07-16 12:02:25.873: W/dalvikvm(10605): Exception Ljava/lang/ExceptionInInitializerError; thrown while initializing Ljcifs/UniAddress;

  19. #19
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NetworkOnMainThreadException
    Tu réalises un appel réseau dans le main thread, le thread graphique, ce qui est totalement déconseillé quelle que soit la plate-forme et le langage.

    Il faut que tu fasses une tâche en background pour réaliser ta copie. Je te suggères de t'intéresser soit à une AsyncTask, soit à un couple Thread/Handler.
    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

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonsoir Hizin,

    Merci de ta réponse.
    J'ai cherché un peu sur le forum et j'ai réalisé ceci au niveau du thread :


    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
     
    package com.example.copyfile;
     
    import java.io.File;
     
    import android.content.Context;
    import android.widget.Toast;
     
     
     
    public class ThreadCopyFile extends Thread {
    	private boolean stopThread = false;
     
    	public synchronized void testFin() throws InterruptedException {
    	        if( stopThread ) {
    	                throw new InterruptedException();
    	        } 
    	} 
    	public void run() {
    //	        try {
    	                // traitement avec un appel régulier à testFin();
     
     
    	    		//Préparation de la copie
    	    		FileUtils fu = new FileUtils();
     
     
    	    		File source = new File ("storage/extSdCard/DCIM/Camera/toto.jpg") ;
    	    		fu.setSource(source);
     
    	    		String dest = "192.168.1.78/ESPACE/TESTS/EssaiMarc/toto.txt";
     
     
    	    		//fu.copyFilePartage(source, dest);
    	    		String bidon="sdfhjkdfsjkkjhskjhf";
    	    		fu.save2Samba(bidon, dest);
     
     
    //	        } catch( InterruptedException e ) {
    //	        	e.getStackTrace();
    //	        } 
    	} 
    	public synchronized void stopp() {
    	        this.stopThread = true;
    	} 
    }
    Le souci, c 'est que j'ai une erreur sur la gestion de exception. C'est la raison pour laquelle je les ais commentées.

    Ce qui laisse dans l'activité :

    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
     
     
    import android.hardware.usb.UsbAccessory;
     
    public class MainActivity extends Activity {
     
    	@Override
    	protected void onResume() {
    		// TODO Auto-generated method stub
    		super.onResume();
    		ThreadCopyFile thread = new ThreadCopyFile();
    	    // Activation du thread
    	    thread.run();
     
    	}
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    	}
     
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
     
    }
    En revanche, j'ai toujours ce genre d'erreur à l'exécution :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
     
    07-16 15:57:23.741: D/Password(17532): Strady\21
    07-16 15:57:23.741: D/Url(17532): smb://192.168.1.78/espace/tests/essaimarc/toto.txt
    07-16 15:57:23.741: D/sFile(17532): smb://kee;mcotte:Strady\21@192.168.1.78/espace/tests/essaimarc/toto.txt
    07-16 15:57:23.746: W/dalvikvm(17532): Exception Landroid/os/NetworkOnMainThreadException; thrown while initializing Ljcifs/netbios/NbtAddress;
    07-16 15:57:23.746: W/dalvikvm(17532): Exception Ljava/lang/ExceptionInInitializerError; thrown while initializing Ljcifs/UniAddress;
    07-16 15:57:23.746: D/AndroidRuntime(17532): Shutting down VM
    07-16 15:57:23.746: W/dalvikvm(17532): threadid=1: thread exiting with uncaught exception (group=0x40d6e2a0)
    07-16 15:57:23.751: E/AndroidRuntime(17532): FATAL EXCEPTION: main
    07-16 15:57:23.751: E/AndroidRuntime(17532): java.lang.ExceptionInInitializerError
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at jcifs.smb.SmbFile.getFirstAddress(SmbFile.java:864)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at jcifs.smb.SmbFile.connect(SmbFile.java:951)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at jcifs.smb.SmbFile.connect0(SmbFile.java:880)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at jcifs.smb.SmbFile.open0(SmbFile.java:972)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at jcifs.smb.SmbFile.open(SmbFile.java:1006)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:142)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:97)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at com.example.copyfile.FileUtils.save2Samba(FileUtils.java:211)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at com.example.copyfile.ThreadCopyFile.run(ThreadCopyFile.java:49)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at com.example.copyfile.MainActivity.onResume(MainActivity.java:29)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1199)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at android.app.Activity.performResume(Activity.java:5280)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2606)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2644)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2130)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at android.app.ActivityThread.access$600(ActivityThread.java:140)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at android.os.Looper.loop(Looper.java:137)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at android.app.ActivityThread.main(ActivityThread.java:4898)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at java.lang.reflect.Method.invokeNative(Native Method)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at java.lang.reflect.Method.invoke(Method.java:511)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at dalvik.system.NativeStart.main(Native Method)
    07-16 15:57:23.751: E/AndroidRuntime(17532): Caused by: java.lang.ExceptionInInitializerError
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at jcifs.UniAddress.<clinit>(UniAddress.java:62)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	... 25 more
    07-16 15:57:23.751: E/AndroidRuntime(17532): Caused by: android.os.NetworkOnMainThreadException
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at java.net.InetAddress.getLocalHost(InetAddress.java:365)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	at jcifs.netbios.NbtAddress.<clinit>(NbtAddress.java:187)
    07-16 15:57:23.751: E/AndroidRuntime(17532): 	... 26 more
    07-16 15:57:37.278: I/Process(17532): Sending signal. PID: 17532 SIG: 9
    Par avance merci de votre aide à tous.

Discussions similaires

  1. Réponses: 37
    Dernier message: 25/03/2014, 23h15
  2. Création d'activité à la volée ?
    Par nicofromChina dans le forum Android
    Réponses: 9
    Dernier message: 02/04/2012, 13h18
  3. Premiers pas création appli sous android
    Par enrico83600 dans le forum Android
    Réponses: 3
    Dernier message: 17/04/2011, 13h10
  4. Réponses: 13
    Dernier message: 17/12/2010, 10h26

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