How remote control/remote desktop on Android works? (e.g. TeamViewer) I am wondering how TeamViewer for Android and simple applications work. For instance, TeamViewer claims on its webpage that they can remotely control Android devices from Samsung, Lenovo, Sony, HTC, and many others.

I know that Samsung SAFE Devices have some API for this, but what about others? How is it possible to remotely control non-rooted Android device?
I haven't done much research specific to TeamViewer, but as an app developer, I'd say it's very possible with certain limitation. The key is, you also need to install certain app on Android device as the interface between PC&lt;->Android.

The Android SDK provides many things: given correct permissions, it can place a call, read/send messages, open app, read device's sensors, etc. If the app has Super User permission, then it will have greater capability.

If you look into the permission of TeamViewer app, you can more-or-less guess what features the remote app can do:


  Version 10.0.2555 can access:
  
  
  Device &amp; app history
  
  read sensitive log data
  
  Identity
  
  find accounts on the device
  
  Photos/Media/Files
  
  modify or delete the contents of your USB storage
  test access to protected storage
  
  Wi-Fi connection information
  
  view Wi-Fi connections
  
  Device ID &amp; call information
  
  read phone status and identity
  
  Other
  
  access SurfaceFlinger
  read frame buffer
  press keys and control buttons
  full network access
  prevent device from sleeping
  view network connections
  connect and disconnect from Wi-Fi
  pair with Bluetooth devices
  control vibration
  measure app storage space
  close other apps
  draw over other apps
  
  


Then, you have TeamViewer app installed on the PC. This works as a monitor/main control. Now, given 2 apps (PC and Android), both apps can communicate to each other (just like chat/messenger app). You can send a message from PC, then the Android app will receive the message, interpret it, and do something on the device. You can also request data from PC, then the Android app will again receive the message, interpret it, and send the data back to PC.