2017-02-08 4 views
0

Je développe une application pour prendre des captures d'écran avec un accès root. J'utilise cet appel à prendre capture d'écran:Android prendre une capture d'écran (ROOT)

"/system/bin/screencap -p " + getFilesDir() + "screen.png" 

Cependant, il crée cette capture d'écran dans le contexte racine et je ne peux pas accéder à mon application même si je chmod 777 et chown user_id: user_id. SELinux indique toujours que cet accès est refusé car scontext est u:r:untrusted_app:s0 alors que tcontext est u:object_r:app_data_file:s0. J'ai essayé d'appeler su avec --context u:r:untrusted_app:s0 mais cela n'a pas aidé.

Toute idée sur la façon d'effectuer l'appel de capture d'écran correcte qui permettra d'économiser à app stockage interne et permettre l'accès à l'application?

Répondre

0

Si vous avez accès au fichier en raison d'autorisations que vous pouvez supprimer la -p <filename> partie de la commande. Dans ce cas, l'image créée sera redirigée vers stdout, ce qui est définitivement accessible par votre application. Vous devez simplement vous connecter au InputStream du Process en exécutant la commande su et enregistrer les données vous-même dans un fichier ou l'utiliser dans votre application.

Comment lire Stdout si montré ici: Read command output inside su process Notez que dans cet exemple, le demandeur veut lire le texte, d'où la solution retenue lit les données dans une mémoire tampon et convertit à un String - Bien sûr, vous n'avez pas besoin de la conversion comme le fichier PNG n'est pas une chaîne imprimable ...