AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Heruntergeladenes APK starten in Android

Heruntergeladenes APK starten in Android

Ein Thema von skoschke · begonnen am 7. Dez 2018 · letzter Beitrag vom 6. Sep 2021
 
sevo

Registriert seit: 7. Dez 2018
1 Beiträge
 
#5

AW: Heruntergeladenes APK starten in Android

  Alt 7. Dez 2018, 09:10
Hi,

ich habe das so umgesetzt:

1. Download des APK, das sollte asynchron / im Hintergrund geschehen, da sonst die App nicht mehr reagiert.
Delphi-Quellcode:
HttpClient := THTTPClient.Create;
try
  DestFile := TFileStream.Create('/sdcard/Download/' + DestFileName, fmCreate);
  HttpClient.Get(UpdateFile.DownloadURL, DestFile);
finally
  DestFile.Free;
end;
2. "Aufruf" des heruntergeladenen APK mittels Intent. FÜhrt dazu, dass der Benutzer das APK installieren und neu starten kann, oder abbrechen.
Diesen Aufruf führe ich im Synchronized/Mainthread aus.
Quelle: http://www.fmxexpress.com/build-your...ey-on-android/
Delphi-Quellcode:
aFile := TJFile.JavaClass.init(StringToJString('/sdcard/Download'), StringToJString(DestFileName));
Intent := TJIntent.Create;
Intent.setAction(TJintent.JavaClass.ACTION_VIEW);
Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
Intent.setDataAndType(TJnet_Uri.Javaclass.fromFile(aFile), //Androidapi.JNI.Net.pas
                      StringToJString('application/vnd.android.package-archive'));
SharedActivityContext.startActivity(Intent);
Für asynchrone Funktionen die ein synchrone (bei z.B. Aktualisierung der GUI) Aktion triggern habe ich eine kleine Hilfsfunktion geschrieben:
Die Fkt. ShowActivity und HideActivity öffnen und schließen hier eine Form, die einen Ladebalken (Kreis) anzeigt und die Eingaben des Benutzer ignoriert (HardwareBack-Key).
Delphi-Quellcode:
procedure CallAsync(AsyncProc : TThreadProcedure; SyncProcCalledAfterAsync : TThreadProcedure);
begin
  if (Assigned(AsyncProc)) then begin
    ShowActivity;
    TThread.CreateAnonymousThread(
      procedure ()
      begin
        try
          AsyncProc;
        finally
          TThread.Synchronize(nil,
            procedure
            begin
              HideActivity;
              if (Assigned(SyncProcCalledAfterAsync)) then begin
                SyncProcCalledAfterAsync;
              end;
            end);
        end;
      end).Start;
  end;
end;
Gruß

sevo
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz