| |
| Posté le 14 septembre 2014 - 09:57 |
Bonjour à tous,
J’ai une application qui est installée dans un répertoire de la mémoire interne et afin de conserver le maximum de place sur celle-ci, l’ensemble des fichiers externes comme les photos, vidéos étaient stockées sur la carte SD dans un répertoire et plusieurs sous-répertoires.
J’avais que des utilisateurs sous Android version 4.2.2 (Jelly Bean) et la semaine dernière, j’ai des utilisateurs qui ont mis à jour leur tablette TAB 3 avec la version 4.4.2 (KitKat).
Je me suis aperçu que je n’arrivais pas à écrire sur la carte SD !!! Donc pas possible de mettre à jour les photos, vidéos.
J’ai creusé sur plusieurs forums, en faites cette version Android KitKat a imposé de grosses restrictions concernant les permissions d’écriture sur les cartes SD en supprimant le pont entre la mémoire interne et la mémoire externe de l’appareil. Une mesure qui empêche notamment les applications d’écrire sur les cartes SD puisque celles-ci ne peuvent plus inscrire de données dans un autre répertoire que celui qui leur est alloué.
Après vérification, avec cette nouvelle version Android KitKat, nous avons la possibilité d’écrire sur la carte SD dans le dossier /Android/data/ com.le-nom-du-package.
J’aimerai créer le dossier sur la carte SD à la génération de l’application Android, un dossier avec le nom du package sous le dossier /Android/data/
J’ai essayé de déposer un fichier à la création de l’APK afin créer le dossier sur la carte SD, je n’y arrive pas.
Avez-vous eu le problème ? Comment vous l’avez résolu ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 330 messages |
|
| Posté le 15 septembre 2014 - 06:57 |
Salut Richard,
As-tu essayé de mettre les fichiers dans /Android/data/com.lenomdupackage/Files car tous les répertoires de ma carte contiennent soit "Files", soit "Cache" (qui doit être réservé pour l'appli) soit les deux.
A+ Daryl
-- http://www.concept4u2.com |
| |
| |
| | | |
|
| | |
| |
| Posté le 15 septembre 2014 - 09:53 |
Bonjour Daryl,
Merci pour ta réponse.
Oui je n'arrive pas à créer ce dossier sur la carte SD automatiquement : "/storage/extSdCard/Android/data/com.societe.fdv/" à la génération de l'APK ou directement à l'ouverture de l'application. Pour info, si je crée manuellement le dossier sur la carte SD, je peux soit créer un dossier ou déposer un fichier.
Richard |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 330 messages |
|
| Posté le 15 septembre 2014 - 14:12 |
Salut Richard,
Je ne connais pas ton code, mais si tu essaies ceci, est-ce que ça fonctionne ?
nEtat est un entier sRep est une chaîne
nEtat = SysEtatCarteStockage() SI nEtat = sysCarteDisponible ALORS sRep = SysRepCarteStockage() fCrée(ComplèteRep(sRep) + "monFichier.txt") FIN
A+ Daryl
-- http://www.concept4u2.com |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 messages |
|
| Posté le 15 septembre 2014 - 17:42 |
Daryl,
Je teste ce soir et je reviens vers toi.
Merci encore,
-- Richard |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 messages |
|
| Posté le 16 septembre 2014 - 10:12 |
Bonjour Daryl,
J'ai essayé ta solution et cela ne fonctionne pas. Le dossier et le fichier ne sont pas créer sur la carte SD.
Je ne vois pas comment résoudre mon problème.
Richard
-- Richard |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 messages |
|
| Posté le 16 septembre 2014 - 10:24 |
Daryl,
Pour info j'ai tracé le résultat de : nEtat=1 sRep=/Storage/emulated/0
Il a bien créer le fichier sur la mémoire interne et non sur la carteSD .
Richard
-- Richard |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 messages |
|
| Posté le 24 octobre 2014 - 09:44 |
Bonjour Richard,
je développe une application Android qui synchronise des documents et je suis également contraint que ces donnés soit stocker sur la carte SD. Pour le moment j'arrive a contourner le problème vus que cette application est installer sur une nouvelle flotte de téléphone qui passe par notre services, cependant J'aimerais savoir si tu as réussi a trouver une solution autre que de créer manuellement le répertoire sur chaque smartphone ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 messages |
|
| Posté le 24 octobre 2014 - 10:48 |
Bonjour Elka,
Je n'ai pas trouvé la solution pour créer sur la carte SD un dossier à l'installation, par contre, j'ai trouvé la solution pour écrire sur la carte SD (Création d'un répertoire, d'un sous-répertoire et déposer des fichiers) avec cette nouvelle version KitKat, tu peux seulement le faire dans le dossier /Android/data/ "Le nom de l'application"/.
J'espère t'avoir aidé,
Richard
-- Richard |
| |
| |
| | | |
|
| | |
| |
| Posté le 16 novembre 2014 - 18:19 |
Bonjour je relance ce sujet
Comment avez vous écrit sur la carte SD sous android Kitkat ?
J'ai testé différentes méthodes, impossible d'y parvenir. je me retrouve systématiquement sur la mémoire interne.
Cela me pose un gros problème pour la synchronisation avec un pc. |
| |
| |
| | | |
|
| | |
| |
| Posté le 05 décembre 2014 - 10:09 |
Un petit up !
Etes vous parvenu à écrire (même en manuel sur la carte SD ? (ne serais ce que copier un fichier par programmation) |
| |
| |
| | | |
|
| | |
| |
| Posté le 05 décembre 2014 - 10:25 |
| |
| |
| | | |
|
| | |
| |
| Posté le 05 décembre 2014 - 19:19 |
Bjr,
popoy a exposé le 05/12/2014 :
J'écris sur la carte SD (ou alors c 'est bien imité ) ) en WM19 sur un Sony Xperia Z3 sous kitkat.
Voila le code que j'ai en init projet : rep_sd est une chaîne = ComplèteRep(SysRepCarteStockage())+"/android/data/com.ctcsoft.ctc-tournee/tournee/journees/"
SI fRepCrée(rep_sd) = Faux ALORS Erreur("Pas de rep sur la sd") // ca ne passe pas ici SINON // info("c bon pour la sd ") // desactivé pour pas chaque fois... FIN SI SysEtatCarteStockage() = sysCarteDisponible ALORS // .... . SINON // Pas de carte de stockage et ca ne passe pas ici non plus Erreur("Il n'y a pas de carte de stockage disponible en écriture sur cet appareil") FIN
Je viens de re tester pour etre sur, lors d'une execution, j'ecris 4 fichiers sur "rep_sd" Lors d'une 2eme execution, je transfère ces 4 fichiers depuis rep_sd vers un serveur ou je les vois arriver.
Par contre, un examen avec les explorateurs de fichiers (pas fait par moi, le Sony est chez mon fils) on a pas trouvé le repertoire en question. Donc le doute subsiste certes, mais l'utilisation est permise.
Qu'en pensez-vous ? a plus
-- ------------------------------------------------------------- www.ctc-soft.com Gestion biblo-documentaire (free-share) Comptabilité shareware Logiciels de Gestion de saisie terrain Spécialisé Tournées de boulangers ------------------------------------------------------------- |
| |
| |
| | | |
|
| | |
| |
| Posté le 06 décembre 2014 - 00:10 |
que te renvoit info(SysRepCarteStockage()) il se peut qu'il te renvoit l'emulation de la carte
En effet j'ai lu sur une autre question du forum
La fonction SysRepCarteStockage() renvoie: - version Androïd inférieure à 4.1: le chemin de la carte SD. - version Androïd 4.1 et inférieure à 4.3: le chemin de la mémoire interne du téléphone par défaut, cependant il est possible en modifiant les paramètres de stockage du téléphone de choisir la carte SD comme "support de stockage par défaut". - version Androïd 4.3... : le chemin de la mémoire interne du téléphone. |
| |
| |
| | | |
|
| | |
| |
| Posté le 07 décembre 2014 - 21:19 |
popoy a écrit :
que te renvoit info(SysRepCarteStockage()) il se peut qu'il te renvoit l'emulation de la carte
En effet j'ai lu sur une autre question du forum
La fonction SysRepCarteStockage() renvoie: - version Androïd inférieure à 4.1: le chemin de la carte SD. - version Androïd 4.1 et inférieure à 4.3: le chemin de la mémoire interne du téléphone par défaut, cependant il est possible en modifiant les paramètres de stockage du téléphone de choisir la carte SD comme "support de stockage par défaut". - version Androïd 4.3... : le chemin de la mémoire interne du téléphone.
C'est tout le problème! C'est ce que renvoi la fonction SysRepCarteStockage(). Google nous dit en substance : "les applications ne requièrent plus de permission pour lire/écrire en internet ou externe tant qu'il s'agit du dossier "privé" de l'application elle même (android/data/com.monappli)
Le souci c'est que je n'arrive pas à voir ce dossier sur la carte SD avec aucune fonction puisque je ne vois pas la carte SD.
si qqun a trouvé la solution je suis preneur. |
| |
| |
| | | |
|
| | |
| |
| Posté le 08 décembre 2014 - 08:48 |
Bjr,
Mat a formulé ce dimanche :
si qqun a trouvé la solution je suis preneur.
Oui, mais la solution a quel probleme, puisqu'on peut "y" copier et "y" lire, enfin manipuler , par programme, tout ce qu'on veut, il reste quoi comme probleme. Android est un cachotier, on ne sait deja pas ou il met l'appli, donc c'est pareil.
a plus
-- ------------------------------------------------------------- www.ctc-soft.com Gestion biblo-documentaire (free-share) Comptabilité shareware Logiciels de Gestion de saisie terrain Spécialisé Tournées de boulangers ------------------------------------------------------------- |
| |
| |
| | | |
|
| | |
| |
| Posté le 08 décembre 2014 - 15:47 |
Pour essayer d'avancer sur le problème d’écrire sur la carte sd j'ai lu que cela n'essessite la permission WRITE_EXTERNAL_STORAGE et Par exemple, l'application avec le nom de package com.example.foo peut désormais accéder librement à Android/data/com.example.foo/ sur les périphériques de stockage externes sans autorisations
Il y a de nouvelles fonctions Java Context.getExternalFilesDirs(), Context.getExternalCacheDirs(), et Context.getObbDirs().
Source : https://source.android.com/devices/storage/
Reste plus qu'a savoir le chemin de la carte Sd car selon les fabriquant ce chemin peut être différent
example de chemins possible : /sdcard/ /storage/emulated/0 /storage/extSdCard/ /storage/sdcard0/ /storage/emulated/legacy/ /mnt/sdcard/external_SD /mnt/emmc /mnt/extSdCard /mnt/sdcard/
Je pourrait testé sur chacun des chemins, le problème est que la liste est incomplète. |
| |
| |
| | | |
|
| | |
| |
| Posté le 08 décembre 2014 - 15:50 |
Dc on sait où Android met l'application c'est dans /data/data/nom du package J'ai vérifié avec un cyanogen mod |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 62 messages |
|
| Posté le 08 décembre 2014 - 16:35 |
Bonjour, Je ne sais pas si ça peut vous aider concernant la fonction SysRepCarteStockage() je vous transmet la réponse que m'a donné l'assistance PC SOFT au mois de juillet.
La fonction SysRepCarteStockage() renvoie: - version Androïd inférieure à 4.1: le chemin de la carte SD. - version Androïd 4.1 et inférieure à 4.3: le chemin de la mémoire interne du téléphone par défaut, cependant il est possible en modifiant les paramètres de stockage du téléphone de choisir la carte SD comme "support de stockage par défaut". - version Androïd 4.3... : le chemin de la mémoire interne du téléphone, il n'est plus possible de connaître le chemin de la carte SD et donc d'écrire dessus.
Cordialement, |
| |
| |
| | | |
|
| | |
| |
| Posté le 08 décembre 2014 - 16:40 |
Bjr,
popoy a utilisé son clavier pour écrire :
Dc on sait où Android met l'application c'est dans /data/data/nom du package J'ai vérifié avec un cyanogen mod
Oui, je voulais dire, on s'en fout un peu, reste a faire pareil avec la sd. J' essaierai d'avoir l'info "SysRepCarteStockage()" des que je peux sur un kitkat.
a plus
-- ------------------------------------------------------------- www.ctc-soft.com Gestion biblo-documentaire (free-share) Comptabilité shareware Logiciels de Gestion de saisie terrain Spécialisé Tournées de boulangers ------------------------------------------------------------- |
| |
| |
| | | |
|
| | |
| |
| Posté le 08 décembre 2014 - 19:35 |
Bjr,
"Cédric" a utilisé son clavier pour écrire :
- version Androïd 4.3... : le chemin de la mémoire interne du téléphone, il n'est plus possible de connaître le chemin de la carte SD et donc d'écrire dessus.
Bon ben alors, la messe est dite, on fait comme le Android il veut et voila.... 
a plus
-- ------------------------------------------------------------- www.ctc-soft.com Gestion biblo-documentaire (free-share) Comptabilité shareware Logiciels de Gestion de saisie terrain Spécialisé Tournées de boulangers ------------------------------------------------------------- |
| |
| |
| | | |
|
| | |
| |
| Posté le 15 décembre 2014 - 17:31 |
bonjour,
Je ne baisse pas les bras sur le sujet. J'ai fait quelques recherches et je suis arrivé à la conclusion qu'il y avait surement une solution pour obtenir le chemin vers la carde sd quelque soit les versions.
Je ne suis pas développeur de métier, aussi je n'y connait rien en code JAVA.
Je me demande donc si il ne serait pas possibl de récuperer ce chein en insérant une procédure en code java natif avec un bout de code comprenant ceci:
Environment.getExternalStorageDirectory();
si un spécialiste pouvait me fournir un bout de code java pour récupérer le chemin de cette foutue carte dans le code WL.
En vous remerciant. |
| |
| |
| | | |
|
| | |
| |
| Posté le 16 décembre 2014 - 09:09 |
Bjr,
Mat a couché sur son écran :
Environment.getExternalStorageDirectory();
si un spécialiste pouvait me fournir un bout de code java pour récupérer le chemin de cette foutue carte dans le code WL.
En vous remerciant.
Si android "trompe" les fonctions Windev, il trompera aussi du code Java. Je pense que les fonctions Windev de traitement de la SD sont l'implementation directe du code Java nécessaire. Et je pense qu'il y a des dev Java chez Pcsoft.
a plus
-- ------------------------------------------------------------- www.ctc-soft.com Gestion biblo-documentaire (free-share) Comptabilité shareware Logiciels de Gestion de saisie terrain Spécialisé Tournées de boulangers ------------------------------------------------------------- |
| |
| |
| | | |
|
| | |
| |
| Posté le 30 décembre 2014 - 23:49 |
Bonjour,
En cherchant sur de nombreux forums, j'ai trouvé un code java qui permettrait de connaitre le chemin de carte SD physique à priori pour la majorité des appareils. ( je n'ai pas testé ne sachant pas comment l'utiliser) voir : http://www.developpez.net/forums/d1429525/java/general-java/java-mobiles/android/repertoire-mnt-sdcard-tablette/
Si cela fonctionne pourrait ton récupérer le résultat dans le code WL ? (et comment ? )
Et j'en reviens au message du départ du sujet : "comment créer le dossier privé de l'application sur la SD au lancement ou à l'installation ??? Comme dit précédemment, si on le crée manuellement, aucun problème pour écrire dans ce répertoire mais pour créer le répertoire lui même... impossible.
Ces quelques questions seront peut être résolues en 2015...
Par avance bonne année à tous. |
| |
| |
| | | |
|
| | |
| |
| Posté le 01 janvier 2015 - 11:24 |
Bonjour et bonne année 2015!
J'ai résolu le problème pour mon application! ( ça ne sera pas le cas pour tous je pense...)
Le principe est le suivant : mon application étant indissociable d'une application windev sur pc j'ai mis en place des étapes de "première connexion" .
1- L'utilisateur installe l'appli PC et l'appli Android.
2- Au démarrage de l'appli Android, un message lui indique qu'il doit connecter son smartphone/tablette(en mode stockage de masse et équipé d'une carte SD) au pc en usb.
3- Dans l'appli pc, lors de la connexion de l'appareil, j'ai mis en place une procédure qui vient créer le répertoire : /Android/data/com.monapppli sur la carte SD.
4- Une fois l'USB déconnecté, l'utilisateur lance l'appli Android, et une procédure toute simple vient tester l'existence du répertoire précédemment créée (/Android/data/com.monapppli ) celui ci n'existant que sur la carte SD physique ou n'est pas accessible sur un appareil non rooter. (Android/data/data/com.monappli)
J’obtiens donc le chemin exact de la carte SD dans 99% des cas et aussi le dossier où mon application dispose des droits d'écriture/lecture est créé par l'appli pc (sans soucis de droits)
Pour mon cas, cela me permet de faire la synchronisation Smartphone/PC via USB automatiquement en utilisant la carte SD en USB. (possible aussi en insérant uniquement la carte SD...)
La manipulation n'est à faire qu'une fois pour chaque appareil (j'enregistre le chemin dans une constante).
J'espère que ça pourra en aider quelques uns.
Mat, Bricoleur du 1er janvier. |
| |
| |
| | | |
|
| | |
| |
| Posté le 02 janvier 2015 - 12:06 |
En effet, il me semble que la synchro à partir d'une application PC soit la seule solution pour l'instant sous KitKat, si l'on ne veut pas rooter sa tablette ou smartphone.
A noter que la création/mise à jour de fichier fonctionne bien sur le dossier frepencours() de l'application , par contre plus aucune possibilité de lire les vidéos ou les pdf ensuite. Ils n'apparaissent que pour l'application (le LanceAppliAssocié fonctionne, mais le lecteur pdf ou video ne trouve plus le fichier).
Du coup, je reviens à la solution SDCard, mais par quel chemin accédez vous à la carte SD une fois le smartphone branché en USB et visible depuis l'explorateur Windows ?
fCopieFichier("C:\Répertoires\Fichier.doc", "?????????" )
Merci a+ |
| |
| |
| | | |
|
| | |
| |
| Posté le 03 janvier 2015 - 10:05 |
bonjour, Il faut bien sur que l'appli PC soit en exécution, j'ai placé dans mon code globale de fenêtre "synchro" fDétecteStockageAmovible() SI Action = StockageAmovibleInséré ALORS sLettrelecteur = Lettre Temporisation(500)
Ensuite je teste la présence du répertoire de mon application Android sur la carte SD
fRépertoireExiste(sLettrelecteur+/Android/Data/Com.Monappli/)
selon son existence, jelance la synchronisation de ma base ou je crée le répertoire
fRepCrée(sLettrelecteur+":\Android\data\com.monappli\")
Cordialement, Mat |
| |
| |
| | | |
|
| | |
| |
| Posté le 07 janvier 2015 - 15:01 |
Bonjour à tous,
Je relance un peu le sujet car je n'arrive toujours pas à réaliser une copie sur la carte SD. Cette fonctionnalité m'est indispensable pour la sauvegarde de fichiers en cas de plantage complet de la tablette.
J'utilise une tablette Samsung Galaxy Tab Active sous KitKat.
D'après ce que j'ai lu, il faudrait que l'application créé elle-même son répertoire sur la carte SD...Mais comment faire ?
Merci à vous |
| |
| |
| | | |
|
| | |
| |
| Posté le 07 janvier 2015 - 17:28 |
Bonjour,
Ayant passé pas mal de temps sur le sujet, le seul moyen que j'ai trouvé est de créer manuellement le fichier sur la carte SD en passant par une application PC. puis de rechercher ce répertoire depuis la tablette pour avoir le chemin exact.
j'ai vu quelques codes java comme dit précédemment (voir le lien) mais je ne sais pas intégrer ces dernier en WM.
Sinon inutile de chercher tout est déjà dit dans ce sujet.
Cordialement, |
| |
| |
| | | |
|
| | |
| |
| Posté le 22 janvier 2015 - 15:05 |
Bonjour,
A MAT J'ai suivi avec intérêt votre façon de faire. Question : Votre application Android écrit-elle dans le répertoire "/Android/data/com.monapppli " de la carte SD ?
Pouvez-vous créer un sous répertoire dans "/Android/data/com.monapppli ". J'ai constaté (pour moi) que l'instruction fRepCrée ne marche pas et en plus ne retourne même pas d'erreur. Je pense à des problème du coté de Windev. Des applications non Windev Mobile écrivent sans problème sur les cartes SD (au moins dans le répertoire prive "/Android/data/com.monapppli "). Donc c'est possible.
Merci.
Mat a écrit :
Bonjour et bonne année 2015!
J'ai résolu le problème pour mon application! ( ça ne sera pas le cas pour tous je pense...)
Le principe est le suivant : mon application étant indissociable d'une application windev sur pc j'ai mis en place des étapes de "première connexion" .
1- L'utilisateur installe l'appli PC et l'appli Android.
2- Au démarrage de l'appli Android, un message lui indique qu'il doit connecter son smartphone/tablette(en mode stockage de masse et équipé d'une carte SD) au pc en usb.
3- Dans l'appli pc, lors de la connexion de l'appareil, j'ai mis en place une procédure qui vient créer le répertoire : /Android/data/com.monapppli sur la carte SD.
4- Une fois l'USB déconnecté, l'utilisateur lance l'appli Android, et une procédure toute simple vient tester l'existence du répertoire précédemment créée (/Android/data/com.monapppli ) celui ci n'existant que sur la carte SD physique ou n'est pas accessible sur un appareil non rooter. (Android/data/data/com.monappli)
J’obtiens donc le chemin exact de la carte SD dans 99% des cas et aussi le dossier où mon application dispose des droits d'écriture/lecture est créé par l'appli pc (sans soucis de droits)
Pour mon cas, cela me permet de faire la synchronisation Smartphone/PC via USB automatiquement en utilisant la carte SD en USB. (possible aussi en insérant uniquement la carte SD...)
La manipulation n'est à faire qu'une fois pour chaque appareil (j'enregistre le chemin dans une constante).
J'espère que ça pourra en aider quelques uns.
Mat, Bricoleur du 1er janvier. |
| |
| |
| | | |
|
| | |
| |
| Posté le 09 octobre 2015 - 16:31 |
Bonjour à tous ! Après avoir fait pas mal de tests de mon côté, je découvre sur ce forum les mêmes conclusions que moi :
- d'après Google on peut accéder à la mémoire SD uniquement dans le répertoire de son application soit dans mon cas : storage/extSdCard/Android/data/com.monappli où com.monappli est le nom du Package déclaré dans la génération de l'application Android
Mais je rencontre les mêmes problèmes que Gérard c'est à dire que depuis l'application android : - impossible de créer le dossier com.monappli - si je crée ce dossier via mon ordinateur, impossible d'y créer un fichier
Avez-vous trouvé des solutions depuis le dernier post ?
Merci ! |
| |
| |
| | | |
|
| | |
| |
| Posté le 09 octobre 2015 - 18:36 |
Bjr,
Lionel Perret a présenté l'énoncé suivant :
Avez-vous trouvé des solutions depuis le dernier post ?
Merci !
Ben en android 4.xx et 5.0.1 le repertoire que tu decris se crée tout seul et des HCreationSiInexistant crée les fichiers a l'interieur...
donc ?
a plus
-- ------------------------------------------------------------- www.ctc-soft.com Gestion biblo-documentaire (free-share) Comptabilité shareware Logiciels de Gestion de saisie terrain Spécialisé Tournées de boulangers ------------------------------------------------------------- |
| |
| |
| | | |
|
| | |
| |
| Posté le 14 mai 2016 - 08:45 |
Bonjour, Malgré l'ancienneté de ce post, je vous donne ma solution pour écrire ou plutôt copier des fichiers sur la sdcard: faire un sysrepcartedestockage() dans une variable chaine qui va vous donner sdcard0 qui est le nom de la mémoire interne puis faite un remplace de sdcard0 par extsdCard et utiliser cette chaine pour désigner le repertoire destination à créer. Ca marche. Merci (Tablette galaxy tab 2) android 4.1.2 |
| |
| |
| | | |
|
| | |