Je le fais pour l'application Terminal AMAZING. Termux qui pour pour des raisons que je ne comprends pas ne demande pas non plus cette permission.
La procédure est plutôt compliquée, impliquant la copie et la modification manuelle d'un fichier xml, et vous fait courir le risque d'empêcher le démarrage de votre système. Vous devrez également le refaire à chaque mise à jour de l'application. Je suppose que si vous utilisez un éditeur qui a un accès Root, vous n'aurez pas à vous soucier de la partie copie. Hmm. Peut-être que je devrais le faire de cette façon aussi, en fait.
Voici les étapes que j'utilise pour fixer les perms pour Termux. Vous devrez les adapter pour qu'elles fonctionnent pour votre application. Elles devraient probablement être les mêmes, à l'exception du nom complet de l'application.
Si vous n'êtes pas familier avec le XML, vous devriez être très hésitant à essayer car vous rendrez probablement votre téléphone non amorçable si vous faites une erreur.
- Assurez-vous que vous ne mettez pas à jour les applications (désactivez la mise à jour automatique) ou que vous ne faites rien d'autre qui pourrait entraîner des modifications du fichier xml des paquets pendant que vous le modifiez.
- Démarrez une session dans l'émulateur de terminal.
su -
dans cette session pour vous donner des autorisations Root.
cd /data/system
-
ls -l packages.xml
- écrire les permissions et la propriété de
packages.xml
. Ils seront essentiels plus tard.
- Quand j'ai fait ça il y a dix minutes, ces valeurs étaient encore
-rw-rw---- system:system
comme ils l'ont été pendant toutes les années où j'ai fait ça. Cela peut être différent sur un autre type de téléphone.
-
cp packages.xml packages.xml.orig
pour faire une copie de sauvegarde de ce fichier système très important
-
cp packages.xml /storage/emulated/0/tmp
ou à un autre endroit, selon la façon dont le système de fichiers de votre téléphone est organisé. Si ce répertoire n'existe pas, il suffit de le créer.
Maintenant, éditez le fichier de la manière que vous préférez (j'utilise vim
sous Termux
mais utilisez n'importe quel éditeur de texte) pour effectuer la modification suivante :
- Trouvez la deuxième ligne contenant
/name="com.termux"/
. Il devrait s'agir d'un shared-user
(c'est-à-dire une ligne commençant par <shared-user
)
- Pour votre application, il peut s'agir d'une ligne différente contenant le nom complet de votre application, selon que votre application a une entrée dans la section précédente de ce fichier. Il se peut également qu'il n'y ait pas d'entrée de permissions pour votre application, auquel cas vous devrez en créer une de toutes pièces, je suppose. J'aurais tendance à penser que cela ne pose pas de problème, mais je n'en sais rien ; vous pourriez causer des problèmes de système en faisant cela. Caveat emptor. Mais oui, si vous trouvez ce noeud pour Termux, que vous le copiez et collez la copie sous l'entrée de Termux, cela devrait probablement fonctionner.
- Copiez le dernier
<item ... />
et le coller juste en dessous.
- Modifiez la ligne collée pour changer la permission (actuellement la mienne a
WAKE_LOCK
) pour lire WRITE_MEDIA_STORAGE
.
- de sorte que le dernier nœud dans le
<perms>
Le nœud doit être
<item name="android.permission.WRITE_MEDIA_STORAGE" granted="true" flags="0" />
Sauvegardez le fichier, quittez votre éditeur et retournez à votre fenêtre Terminal (où vous avez toujours une session Root en cours d'exécution dans /data/system
).
-
cp /storage/emulated/0/tmp/packages.xml .
- Utilice
cp
ici et PAS mv
como mv
ne définit pas les permissions correctement.
-
VERIFY que les permissions sont les mêmes qu'au début. C'est TRÈS IMPORTANT car le téléphone ne démarrera pas si les permissions sont incorrectes. J'ai fait cela une fois et j'ai réussi à le sauver d'une manière ou d'une autre, j'ai oublié comment.
A ce stade, vous devriez être prêt à redémarrer. Il est probablement prudent de faire un diff packages.xml packages.xml.orig1
ou autre pour vérifier que vous avez effectué le changement correctement.
Après le redémarrage, votre application devrait avoir un accès en écriture à la carte SD externe. Bonne chance !
Si quelqu'un connaît un moyen plus propre de faire cela, faites-le moi savoir ! Cette méthode est très compliquée et comporte le risque de devoir passer une heure de plus à réparer mon téléphone.