, die für nicht-Plattform (3rd Party) Anwendungen nicht möglich ist: Sie können die Installation Antrag stellen müssen direkt an PackageManager.
Packagemanager hat nicht öffentliche API, installPackage() (Linie 2584 zum Zeitpunkt des Schreibens):
/**
* @hide
*
* Install a package. Since this may take a little while, the result will
* be posted back to the given observer. An installation will fail if the calling context
* lacks the {@link android.Manifest.permission#INSTALL_PACKAGES} permission, if the
* package named in the package file's manifest is already installed, or if there's no space
* available on the device.
*
* @param packageURI The location of the package file to install. This can be a 'file:' or a
* 'content:' URI.
* @param observer An observer callback to get notified when the package installation is
* complete. {@link IPackageInstallObserver#packageInstalled(String, int)} will be
* called when that happens. observer may be null to indicate that no callback is desired.
* @param flags - possible values: {@link #INSTALL_FORWARD_LOCK},
* {@link #INSTALL_REPLACE_EXISTING}, {@link #INSTALL_ALLOW_TEST}.
* @param installerPackageName Optional package name of the application that is performing the
* installation. This identifies which market the package came from.
*/
public abstract void installPackage(
Uri packageURI, IPackageInstallObserver observer, int flags,
String installerPackageName);
, wo eine der möglichen Flags ist INSTALL_ALLOW_DOWNGRADE
:
/**
* Flag parameter for {@link #installPackage} to indicate that it is okay
* to install an update to an app where the newly installed app has a lower
* version code than the currently installed app.
*
* @hide
*/
public static final int INSTALL_ALLOW_DOWNGRADE = 0x00000080;
Alle diese APIs sind versteckt und nicht für Apps von Drittanbietern verfügbar. Jetzt können Sie versuchen, darüber nachzudenken, aber ich bin ziemlich positiv, dass die Plattform den Zugang zu ihnen sowieso einschränken wird.
Wenn dies Ihre Unternehmenskunden so sehr verärgert hat wie meine, dann sollten Sie das Problem hier auflisten: https://code.google .com/p/android/issues/detail? id = 62545 –