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 :

PB pour ecrire un fichier externe sur telephone


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 18
    Points : 15
    Points
    15
    Par défaut PB pour ecrire un fichier externe sur telephone
    Bonjour,


    Alors voila, je suis nouveau en développement ANDROID et également débutant en JAVA (je connais bien le VB)
    Je cherche a faire une application dans laquelle j'ai besoin de récupérer la date, l'heure et d'en faire des enregistrements sur fichier, visible et récupérable depuis le PC via connexion usb (application de pointage pour le boulot).

    pour l'heure et la date pas de problème.


    je galère un peu pour les fichiers ..
    j'ai fait des recherches et voila ce que j'en ai retenu :
    - fichier SharedPreference : pour les settings de l'app, pour plus tard éventuellement.
    - fichier interne : on peut mettre ce qu'on veut mais visible et accessible uniquement par l'application, pas pour ce que je veux faire.
    - fichier externe : on peut mettre ce qu'on veut et visible et accessible par tout le monde. ce que je veux faire.

    j'ai trouver ce code, qui me plait bien, mais qui ne marche pas .. je ne comprends pas pourquoi :
    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
     
    try
            {
                File file = new File(Environment.getExternalStorageDirectory().getPath() + "/Android/data/" + getPackageName() + "/files/toto.txt");
     
                TextView textview = (TextView)findViewById(R.id.textView3);
                textview.setText(file.toString() + "  -  " + Environment.getExternalStorageState());
     
                file.createNewFile();
                FileOutputStream output = new FileOutputStream(file);
     
                output.write(new String("essai").getBytes());
     
                output.close();
     
            }
            catch(IOException e)
            {
                e.printStackTrace();
            }
    dans le fichier manifest j'ai rajouter les permissions en lecture et ecriture (directement sous le projet, pas dans l'activity ..)

    mon affichage me retourne le chemin de fichier suivant :
    "/storage/sdcard0/Android/data/rf.myapplication/files/toto.txt"

    suivi de :
    "mounted"


    le répertoire "sdcard0" correspond a la mémoire du téléphone (je n'ai pas de carte mémoire) mais c'est la mémoire visible depuis l'ordinateur via usb, donc c'est bien la que je veux enregistrer.
    j'ai essayer avec et sans la connexion a l'ordinateur (des fois que l'usb empêche l'écriture ..) mais rien ne change, je ne retrouve pas mon fichier. pourtant j'ai aucune erreur lorsque j'exécute ce code sur mon téléphone, tout se déroule normalement, l'app ne plante pas.

    quelqu'un peut m'aider ??
    merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Re,

    j'ai essayer un autre code :

    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
     
    try
            {
                File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + "/toto.txt");
     
                TextView textview = (TextView)findViewById(R.id.textView3);
                textview.setText(file.toString() + "  -  " + Environment.getExternalStorageState());
     
                file.createNewFile();
                FileOutputStream output = new FileOutputStream(file);
     
                output.write(new String("essai").getBytes());
     
                output.close();
            }
     
            catch(IOException e)
            {
                Log.e("Exception", "File write failed: " + e.toString());
            }
    en gros ce qui change c'est juste la 1ere ligne ou je définis l'emplacement (Public en plus).
    cela me donne maintenant :
    "storage/sdcard0/DCIM/toto.txt" et "toujours "mounted"
    hélas ca ne change rien.
    l'app ne plante pas.
    j'ai regarder dans le logcat, j'ai le message suivant :
    "java.io.IOException: open failed: EACCES (Permission denied)"

    pourtant j'ai bien rajouter la permission ...

    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="rf.myapplication">
     
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
     
                </intent-filter>
            </activity>
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        </application>
     
    </manifest>

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 141
    Points : 177
    Points
    177
    Par défaut
    depuis Android 6 il faut aussi demander les permissions au Runtime

    https://developer.android.com/traini...equesting.html

    attention aux répertoires : les applications ne peuvent plus écrire partout comme des sauvages.
    regarde la doc.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Re,

    bon ca y est ca marche.
    en fait j'avais pas mis les permissions au bon endroit dans le manifest...ca va tout de suite mieux
    il faut la mettre sous la balise "manifest", moi je l'avais mis sous "application".

    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="rf.apppointage">
     
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".act_principale">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    </manifest>

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/04/2014, 12h48
  2. Fonction pour enregistrer un fichier temporaire sur l'ordinateur
    Par nancy maman dans le forum Général Python
    Réponses: 25
    Dernier message: 28/05/2011, 06h39
  3. Réponses: 2
    Dernier message: 04/02/2011, 17h59
  4. Code source pour rechercher des fichiers Mp3 sur le disque
    Par specta61 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/02/2007, 19h49

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