How does TeamViewer take screenshots and allow remote control without root?

android developer picture android developer · Jul 30, 2013 · Viewed 10.9k times · Source

Background

TeamViewer allows to remote control other android devices . it's quite slow, but it does the job.

it requires 2 apps being installed. one that controls (link here), and one for being controlled (link here) .

I'm not sure if it has any alternatives, but I would like to know if it's possible to do the same.

The problem

I can't find any special permission used by teamViewer, and it does it all without root.

This is weird, since I've read on so many places that in order for an app to take a screenshot, it must have root permission (or be connected to a computer and use ADB to take a screenshot).

The question

How could it be? What does TeamViewer has that makes it possible?

How can you take a screenshot without any special permission? This app isn't even a system app...

is it even possible to do any of the things TeamViewer does without root?

Are there alternatives to TeamViewer?

Suppose I do have root, how do I remote control or stream screenshots efficiently?

Answer

MyPreciousss picture MyPreciousss · Dec 5, 2013

Teamviewer does NOT support taking screenshots or remote control without root. The only Android devices it does manage to pull this off is on Samsung devices

Update 2019 June: Now it supports a slew of different Android OEMs beyond Samsung. Notably, Google itself is absent (So no remote control on Pixel series, just screensharing)

This Teamviewer press release shows how it's done. It basically installs this Samsung specific addon from the Play Store. As a background, Samsung got this working to counter Amazon's Kindle Fire's new feature called Mayday. Technically, Samsung basically gave Teamviewer a bunch of special pseudo-root-level certificates and signatures so the app can work seamlessly for everyone (by having draw-over-other-apps and make-interactions-on-users-behalf access via the Accessibility APIs presumably).

This is how it looks on non-Samsung non-rooted devices [left] and how it asks for Super User access on non-Samsung rooted devices [right] (Click through for original resolution):

Teamviewer Quicksupport asking for screenshots from end user Teamviewer Quicksupport asking for screenshots from end user