Several years ago, Android allowed you to set a permission that lets you install apps from a third party location other than Google's own app store Google Play. Eventually they deprecated that permission and only allowed hardware manufacturers to set that permission. I haven't checked since then whether that is still the case.
What I am wondering though is how I would handle a situation where a company wants to install an APK file on to their own devices but not host the APK file in Google Play. How would they provision this?
Android does allow users to install APK files on to their devices that don't come from Google Play, although that feature has to be enabled. Can that feature be enabled programmatically?
The solution that I can think of to installing company apps is to upload an installer app to Google Play that has been developed specifically by the company and used only for the company, even if it's available to everyone in Google Play. Employees would install this app as they do any app from Google Play. When this installer runs, it would prompt for a username/password. Upon authentication, the app would retrieve the company's apps from its own server and install them.
Is this the solution enterprises are currently using or is there something built into Jelly Bean / KitKat / Lollipop that provides provisioning?
EDIT:
Google states on their Android site:
The application is installed on users' devices. Android does not currently have an automated provisioning solution. Some of the ways a sysadmin might distribute the application to users are as follows: Google Play. Enabling installation from another store. Distributing the application through other means, such as email or websites.
http://developer.android.com/guide/topics/admin/device-admin.html
Aside from those suggestions, they don't offer anything else. Those solutions wouldn't be acceptable in many organizations.
I'm pretty certain that only the Play Store app has the authority/permissions to programmatically install apps. Those permissions are not available externally to third-party apps. It would be a lot easier to use one of the following options and simply let the OS handle the installation process.
For enterprise apps, the APK file can be
In both these cases, the user is asked whether they would like to install an APK that originates from a third-party source.
Also, it is not possible to programmatically change the permission for installing third-party apps. That choice has to be made by the user, and the user is confronted with that choice when they access an APK file in the two ways described above.
There is one more option - using Google Play's private channel:
1. Distribute Android apps in your organization.
2. Use a Private Channel to distribute apps in your organization.
3. Deploy app through Google Play Store in a private channel without Google Apps?.