PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV Mobile 2024 → Stockage fichier impossible.
Stockage fichier impossible.
Started by Guest781227, Jul., 27 2017 9:56 AM - 9 replies
Registered member
6 messages
Popularité : +1 (1 vote)
Posted on July, 27 2017 - 9:56 AM
Bonjour,

Je conçois actuellement une application qui génère un PDF (en faisant appel à un webservice), je stocke le fichier dans un Buffer puis ensuite je le sauvegarde sur le disque pour enfin le lire dans la visionneuse PDF du mobile.

Ce que j'ai développé fonctionne très bien via le simulateur, mais sur mobile non.

La partie sauvegarde sur le disque ne fonctionne pas, il m'est impossible sur mon smartphone de lire le PDF stocké dans le répertoire : fRepDonnées() ou fRepExe() ou encore fRepEnCours(). J'ai remarqué aussi que je n'avais pas accès sur mobile à ces répertoires... Ne faut-il pas être super-utilisateur ?

Pour info, la permission WRITE_EXTERNAL_STORAGE est bien activé lors de la génération du projet, et fSauveBuffer() ne renvoie pas d'erreur.

J'ai également une question : Est-il possible sous WinDev de lire à la volée le fichier PDF (qui est directement chargé dans la mémoire sans passer par une sauvegarde sur le disque) ?

Merci de votre aide.
Registered member
199 messages
Popularité : +14 (16 votes)
Posted on July, 27 2017 - 2:07 PM
Bonjour,

J'ai déjà eu un cas similaire. Malgré la permission "WRITE_EXTERNAL_STORAGE" je ne pouvais écrire dans la mémoire du Smartphone.
La solution, dans mon cas, était : Sur la smartphone, dans paramètres -> Applications -> Paramètres Applications (la petite roue dentée) -> Autoris.des Applis -> Stockage et là autoriser mon application à gérer le stockage.

--
Bon développement

Pierre Devillers
Registered member
6 messages
Popularité : +1 (1 vote)
Posted on July, 28 2017 - 12:15 PM
Il n'y a pas une autre solution? c'est vraiment gênant.
Registered member
151 messages
Popularité : +7 (7 votes)
Posted on July, 28 2017 - 1:03 PM
Bonjour,

notez qu'à partir de Android 6 vous devez explicitement demander les permissions, les fonctions WinDev s'occupent de ça, mais si vous utilisez du Java ou s'il y a un bug dans une des fonction WinDev alors vous devez ouvrir la fenêtre de demande d'autorisation à la main.

Pour tester une permission par exemple :

ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)


Pour ouvrir manuellement la fenêtre de demande de permission à l'utilisateur :

requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);


Je vous laisse voir sur le site Android Developpers pour plus d'informations.
Registered member
6 messages
Popularité : +1 (1 vote)
Posted on July, 28 2017 - 7:23 PM
Merci de votre réponse Gael ! :)
Posted on September, 10 2020 - 8:01 PM
Bonsoir,

cette solution m'a l'aire d'être intéressant mais malgré avoir mis WRITE_EXTERNAL_STORAGE et READ_EXTERNAL_STORAGE

et en créant un une procédure java
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);


J'ai cette erreur:

Erreur retournée :
:compileDebugJavaWithJavacJ:\Android\Gen\src\com\xxx\scanpal\wdgen\GWDCPProceduresGlobales.java:1819: error: package Manifest does not exist
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
                                        ^
J:\Android\Gen\src\com\xxx\scanpal\wdgen\GWDCPProceduresGlobales.java:1819: error: cannot find symbol
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
                                                                           ^
  symbol:   variable MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE
  location: class GWDCPProceduresGlobales
Note: J:\Android\Gen\src\com\xxx\scanpal\wdgen\GWDCPProceduresGlobales.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors
 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileDebugJavaWithJavac'.
Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 13s
16 actionable tasks: 6 executed, 10 up-to-date
Registered member
3,311 messages
Popularité : +93 (137 votes)
Posted on September, 11 2020 - 3:21 PM
import android.Manifest;
Registered member
794 messages
Popularité : +40 (42 votes)
Posted on September, 13 2020 - 1:12 PM
Bonjour. Je ne pense pas que ce soit un problème de stockage, mais plutôt un problème d'accès. Pour des raisons de sécurité, les fichiers qu'une application stocke dans ses dossiers ne sont accessibles que par l'application elle-même. Les autres applications du téléphone ne peuvent pas y accéder. Si dans votre cas vous voulez ouvrir le PDF avec Acrobat, Acrobat ne pourra pas lire le fichier. La seule solution est de créer un dossier "externe" qui s'accroche à la racine du stockage interne du téléphone (pour cela ils ont les autorisations WRITE/READ_EXTERNAL_STORAGE) qui sont nécessaires à partir de certaines versions d'Android. Bien entendu, vous devez tenir compte du fait que ces dossiers peuvent être accessibles par toute autre application installée sur l'appareil.

Rubén
Registered member
964 messages
Popularité : +16 (20 votes)
Registered member
201 messages
Popularité : +6 (10 votes)
Posted on September, 23 2020 - 3:00 PM
Si tout à fait !
Et au delà de la target cible dans le manifeste, sous Androïd 10 il semblerait qu'on ne puisse plus accéder aux repertoires en dehors de ceux de l'application
Du coup comment on fait pour partager des fichiers entre plusieurs applications ??

--
Ce n'est pas l'outil le plus important mais la manière de s'en servir