Einzelnen Beitrag anzeigen

skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Heruntergeladenes APK starten in Android

  Alt 6. Sep 2021, 07:57
Hallo,

ich hole das Ganze noch mal hoch, da ich mit Android >= 8 und 2 Apps Probleme habe:

In beiden Apps wird ein Update-APK geladen und per Intent gestartet.
Bei einer App funktioniert es, bei der anderen startet das Update APK nicht, es gibt auch keinerlei Fehlermeldungen.
Das APK kann über eigene Dateien manuell problemlos gestartet werden.
Beide Apps verwenden den gleichen Code:
Delphi-Quellcode:
procedure StartUpdate;
var
  Intent: JIntent;
  filename: string;
  fileext: string;
  dsc: string;
  Authority: JString;
  LUri: Jnet_Uri;
  aFile: JFile;
begin
  dsc := TPath.DirectorySeparatorChar;
  filename := DownloadDir + FilenameAPK;
  fileext := ExtractFileExt(filename);
  fileext := uppercase(stringreplace(fileext, '.', '', []));
  if not fileexists(filename) then
  begin
    showmessage(filename + ' nicht gefunden !');
    exit;
  end;
  if TOSVersion.Check(8) then
  begin
    try
      // wichtig ab Android 8 Zugriffsrechte!
      Authority := StringToJString
        (JStringToString(TAndroidHelper.Context.getApplicationContext.
        getPackageName) + '.fileprovider');
      aFile := TJFile.JavaClass.init(StringToJString(DownloadDir),
        StringToJString(FilenameAPK));
      LUri := TJFileProvider.JavaClass.getUriForFile(TAndroidHelper.Context,
        Authority, TJFile.JavaClass.init(StringToJString(filename)));
      Intent := TJIntent.Create;
      Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
      // Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW);
      Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
      Intent.addFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
      Intent.setDataAndType(LUri,
        StringToJString('application/vnd.android.package-archive'));
      TAndroidHelper.Activity.startActivity(Intent);
    except
      showmessage('Fehler');
    end;
  end
.....
Wo kann ich ansetzen zum Suchen, warum es im einen Programm geht, im anderen nicht?
Die Permissions sind auch in beiden identisch.

Ciao
Stefan
  Mit Zitat antworten Zitat