Mon téléphone est enraciné. J'essaie de faire un programme très simple. Le programme doit supprimer le fichier de l'application/du dossier de l'application. Comment puis-je le faire ? Je suis novice, donc les exemples de code sont appréciés.
Réponses
Trop de publicités?Si votre téléphone est rooté, vous pouvez lancer des commandes en tant que Root via su
-à condition que le su
binaire est présent et dans votre PATH
- puisque Android est une variante de Linux. Il suffit d'exécuter les commandes de suppression par Runtime.exec()
et Superuser devrait s'occuper de l'invite de permission.
Voici un exemple simple de son utilisation que j'ai pris de cette question :
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes(command + "\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
Vous pouvez supprimer tous les fichiers d'un dossier de manière récursive en utilisant la méthode ci-dessous.
private void DeleteRecursive(File fileOrDirectory) {
if (fileOrDirectory.isDirectory())
for (File child : fileOrDirectory.listFiles())
{
child.delete();
DeleteRecursive(child);
}
fileOrDirectory.delete();
}
Sur son github Chainfire fournit une exemple de réalisation d'un Shell
que vous pouvez utiliser pour exécuter le rm
comme Root. Le site rm
est la variante Linux de la commande permettant de supprimer des fichiers (et des dossiers).
Extrait de code :
if(Shell.SU.available()){
Shell.SU.run("rm /data/app/app.folder.here/fileToDelete.xml"); //Delete command
else{
System.out.println("su not found");
Ou si vous êtes certains que le su
est disponible, vous pouvez simplement exécuter la commande delete (ligne commentée) et sauter la vérification.
Fuente: How-To SU