Installieren Sie eine GooglePlay-App von NFC

ei der Arbeit mit Lollipop habe ich ein device-owner App, die zum Zeitpunkt der Bereitstellung mit NFC installiert wird.
Was ich jetzt tun muss, ist, die automatischen Updates für meine App von Google Play zu erledigen, um auf das Standard-Update-System für Android-Apps zurückzugreifen ...

isher kann ich mir zwei Möglichkeiten vorstellen, um dies zu erreichen, aber ich weiß nicht, wie ich damit umgehen soll:

in meiner NFC-InstallationskonstanteEXTRA PROVISIONING DEVICE ADMIN PACKAGE DOWNLOAD LOCATION Installiere die App direkt aus dem Play Store anstelle der URL auf meinem eigenen Entwickler-Server.
Wie auch immer, diese Konstante muss mit der URL einer Apk-Datei umgehen, und ich habe keine offizielle Möglichkeit gefunden, die Apk-Installation direkt aus dem Play Store zu bekommen? (da es in Zukunft eine Produktions-App sein wird, interessieren mich Hacks nicht) Installieren Sie die apk weiterhin vom dev-Server, lassen Sie dann jedoch zu, dass sich die App mit ihrem kleinen Bruder im Play Store mit demselben Paketnamen aktualisiert.
Um es anders auszudrücken: Wäre es möglich, eine v1-apk von einem benutzerdefinierten Speicherort aus zu installieren, dann eine v2 in den PlayStore zu laden ... und die Magie wahr werden zu lassen?

Ich würde mich freuen zu hören, wenn jemand Erfahrungen über solche Verfahren austauschen könnte. Danke fürs Lesen

BEARBEITE nach @Stephan Branczyk Vorschlag könnte ich noch ein paar Tests machen, hier ist was ich gemacht habe und die Ergebnisse:

1 - In der NFC-Bereitstellung habe ich die apk-URL durch snep ersetzt: //my.app.packagename without luck; es gibt nur einen fehler ohne viel erklärung.

2 - Ich habe diese URL durch einen solchen PlayStore-Link ersetzt:https: //play.google.com/store/apps/details? id = my.app.packagename aber es gibt einen Prüfsummenfehler, ob ich die lokal berechnete Prüfsumme oder die in den GooglePlay apk-Details angegebene Prüfsumme verwende. Es sieht nicht so weit vom Ziel entfernt aus, aber ich konnte es nicht zum Laufen bringen.

3 - Endlich kam ich auf meine erste Lösung zurück, eine selbst gehostete Apk-Version 1 ... aber dieses Mal versuchte ich, im PlayStore eine neuere Version 2 der App mit genau demselben Paketnamen zu veröffentlichen ... Das führte mich zu seltsamen Dingen:

Zuerst wurde meine App nirgendwo in der lokalen PlayStore-App angezeigt, aber als ich in Google Play danach suchte, wurde sie mit dem grünen "installierten" Badge angezeigt und schlug mir vor, ein Update durchzuführen .Dann ist die App nach diesem ersten manuellen Update in Version 2 gut und besser: Sie wird in meinem PlayStore gut aufgeführt.Optimistisch habe ich eine Version 3 der App hochgeladen ... um zu sehen, ob mein PlayStore meine App automatisch aktualisiert (wie bei allen anderen), aber leider kein Glück: Auch wenn meine App noch im PlayStore aufgeführt ist , und die Schaltfläche "Aktualisieren" vorschlagen ... es wird niemals von selbst aktualisiert, wie es sollte; Ich muss noch manuell darauf klicken.

Ist das nicht ein seltsames Verhalten? Wenn einige Ideen dazu haben, müsste ich mich wirklich auf die Play Store-Funktionen verlassen können, aber bisher kein Glück, und ich kann nicht glauben, dass die App-Distribution von Device-Owner nicht mit PlayStore kompatibel ist?

Nur für den Fall, hier ist die Art von Bereitstellungscode, den ich verwende:

try {
            Properties p = new Properties();

            p.setProperty(
                    DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME,
                    "my.app.packagename");
            p.setProperty(
                    DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION,
                    "http://www.example.com/myDeviceOwnerApp.apk");
            p.setProperty(
                    DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM,
                    "U55o3fO0cXQtUoQCbQEO9c_gKrs");

            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            OutputStream out = new ObjectOutputStream(bos);
            p.store(out, "");
            final byte[] bytes = bos.toByteArray();

            NdefMessage msg = new NdefMessage(NdefRecord.createMime(
                    DevicePolicyManager.MIME_TYPE_PROVISIONING_NFC, bytes));
            return msg;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

Antworten auf die Frage(4)

Ihre Antwort auf die Frage