2016-01-08 3 views
3

Je veux faire une application Android, que d'abord va télécharger le binaire android tcpdump binaire et le second va l'exécuter. Le fichier a été téléchargé avec succès, mais je ne peux pas mettre exécutable:Définir les autorisations exécutables dans le fichier de l'application Android

try 
{ 
    File file = new File("/sdcard/tcpdump"); 

    if (file.exists()) 
    { 
     Runtime.getRuntime().exec(new String[]{ "su", "-c", "chmod 777 /sdcard/tcpdump" }); 
    } 
} 
catch (Exception e) 
{ 
    e.printStackTrace(); 
} 

Répondre

3

fichiers situés sur la carte SD ne sont pas exécutables par défaut. Déplacez le fichier vers le stockage interne, à savoir data/local/tmp. Les fichiers sous le répertoire "get" l'autorisation du monde-exécutable.

0

Vous devriez pouvoir définir ces autorisations (rwx rwx rwx) sur le fichier en utilisant:

file.setReadable(true, false); //Sets everyone's permissions to readable 
file.setWritable(true, false); //Sets everyone's permissions to writable 
file.setExecutable(true, false); //Sets everyone's permissions to executable 

Le premier paramètre définit l'autorisation de true et le second paramètre définit le paramètre ownerOnly-false, ce qui signifie la la permission est appliquée à tous les utilisateurs.

Vous ne devriez pas avoir besoin d'exécuter une commande Runtime pour définir des autorisations sur un fichier. Vous pouvez simplement utiliser les méthodes d'assistance sur la classe File. Voici les liens aux différents documents de la méthode: setReadable(), setWritable(), et setExecutable()