Dies ist nur reine Spekulation, wie ich noch nie die Paket-Installer-API selbst zu verwenden versucht.
Sie könnten versuchen, ein setzen Installationspaket ge für Ihre Gerätebesitzer-App (mit PackageManager.setInstallerPackageName()
). Dieses Installationspaket muss ein separates APK sein, das mit dem gleichen Zertifikat wie das APK des Gerätebesitzers signiert ist.
getPackageManager().setInstallerPackage("<device.owner.package.name>", "<installer.package.name>");
Von Ihrem Installateur APK, könnten Sie dann PackageInstaller
verwenden, um ein Update vorzubereiten:
PackageInstaller pi = getPackageManager().getPackageInstaller();
int sessId = pi.createSession(new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL));
PackageInstaller.Session session = pi.openSession(sessId);
OutputStream out = session.openWrite("app");
// .. write updated APK file to out
session.fsync(out);
session.commit(...);
session.close();
Ich bin nicht sicher, ob dies leise obwohl das Update installiert (oder ob das funktioniert überhaupt in der wie ich es erwartet hätte).
Evolve (https://github.com/VivekPanyam/Evolve) könnte hilfreich sein –
Ich sah bereits, aber nicht in der Lage, es zu verwenden, auch ist es in der Alpha-Phase, die unsere App abgestürzt sein könnte. Es scheint, den Code zur Laufzeit zu ändern, sieht also etwas kompliziert aus. – Shubham
@Shubham hast du das funktioniert? – Maragues