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 :

Modifier les droits (chmod) sur un fichier


Sujet :

Android

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2011
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 89
    Points : 109
    Points
    109
    Par défaut Modifier les droits (chmod) sur un fichier
    Bonjour a tous.

    Jai développé une application qui tourne en tant que service.

    Chaque minute (pour les tests), elle verifie le contenu d'un dossier (/data/share/)
    Si un fichier module.apk est présent, elle cherche à l'installer.

    Cette partie là est plutôt fonctionnelle car jusque là, jdéposais le fichie via éclipse dans le dossier.

    Je me suis ensuite betement inspiré du code getFile() dans la FAQ pour télécharger le fichier à partir d'une adresse url.

    Le fichier est entièrement téléchargé sans soucis. (même nombre de bits que via l'upload via eclipse)
    Seulement l'installation d'un fichier téléchargé pose soucis. L'erreur INSTALL_FAILED_INVALID_APK m'est retournée.

    Je pense, sans en etre certain, que ce sont les droits d’accès (lecture/ecriture/execution) du fichier qui pose problème. Ils sont en effet différents suivant la methode utilisée.


    J'ose donc essayer de faire un chmod sur le fichier incriminé. Mais cela dépasse un peu mes connaissances.

    Pour faire une telle chose, dois-je etre en SU ? si oui comment faire ?
    Quelle commande utiliser pour faire ce ChMod ?


    Pour l'instant j'ai essayé :
    Runtime.getRuntime().exec("su");
    et
    Runtime.getRuntime().exec("setperm chmod 777 " + path);

    Mais l'application semble ne plus pouvoir s'exécuter normalement après ces demandes.
    Edit: Je viens d' y penser. Mais mon materiel (industriel) n'est, je crois, pas rooté.
    merci.
    Images attachées Images attachées  

  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
    Pourquoi ne pas tout simplement définir les droits d'accès à la création du fichier (juste avant le téléchargement) ?

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2011
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 89
    Points : 109
    Points
    109
    Par défaut
    Parce que je ne sais pas du tout comment le faire
    (oui, j'y ai pensé)

  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
    Dans l'exemple fourni par Google, on utilise le mode MODE_PRIVATE pour manipuler le fichier.
    Essaie avec le mode MODE_WORLD_READABLE

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2011
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 89
    Points : 109
    Points
    109
    Par défaut
    Merci beaucoup.
    Cela semble avoir bel et bien résolut le problème.

    Si j'ai bien compris, les fichiers créés par une application lui sont propres. Aucune application (sauf ayant le meme user ID) ne devait pouvoir ecrire/lire dans ces fichiers.

    Préciser MODE_WORLD_READABLE permet la lecure du fichier par d'autres User ID.
    Cependant ce mode sera deprecated à partir de l'API 17 (4.2.2).
    Bon, ok, mon matériel est en 2.3 mais une option de mise à jour vers une 4.X est envisagée.

    Quelle sera la solution pour que ce fichier soit accessible à d'autres environnement lorsque ce mode sera retiré ?

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Cela dépend ou est situé le fichier (et quelle fonction est utilisée pour y avoir accès).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2011
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 89
    Points : 109
    Points
    109
    Par défaut
    Dans ce cas, quelle est la meilleure solution pour partager des fichiers à d'autres applications (dont le packageManager du system) ?

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

Discussions similaires

  1. Peut-on modifier les droits d'accès des fichiers assets ?
    Par chinoismasque dans le forum Android
    Réponses: 13
    Dernier message: 27/05/2011, 10h59
  2. [Débutant] modifier les droits sur un fichier
    Par DUDE007 dans le forum Langage
    Réponses: 8
    Dernier message: 09/02/2011, 05h11
  3. modifier les droits utilisateurs d'un fichier
    Par neho88 dans le forum Langage
    Réponses: 3
    Dernier message: 14/05/2010, 17h40
  4. Comment modifier les droits sur un répertoire ?
    Par rattlehead dans le forum Framework .NET
    Réponses: 4
    Dernier message: 19/10/2006, 14h42
  5. Modifier les droits pour supprimer un fichier
    Par sitirna dans le forum C++Builder
    Réponses: 8
    Dernier message: 24/08/2006, 17h47

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