WIP: Android 6 Device Owner unattended install

Open username-removed-16558 requested to merge dschuermann/fdroidclient:device-owner into master

This is a very early merge request, just to show how we could use Android 6's "device owner" PackageInstaller API.

As can be seen by comparing https://github.com/android/platform_frameworks_base/blob/59701b9ba5c453e327bc0e6873a9f6ff87a10391/services/core/java/com/android/server/pm/PackageInstallerSession.java#L211 with https://github.com/android/platform_frameworks_base/blob/marshmallow-release/services/core/java/com/android/server/pm/PackageInstallerSession.java#L221 the PackageInstaller API has been enabled for "device owners" on Android 6.

So I hacked a proof of concept code and it looks like it works.

If you like to test:

  1. get this branch
  2. To make F-Droid a device owner, do "adb shell" and then "dpm set-device-owner org.fdroid.fdroid/.receiver.DeviceOwnerReceiver" (this does not require root). However I suspect that if we want to execute this without adb and in the context of F-Droid it will require root.
  3. Install any app

I am not entirely sure what else can be done as a device owner, I will look into this more later. The only drawback I saw was that a notification is shown (but no further user interaction was necessary), as seen on the screenshot: device-2016-04-14-154250

What do you think?