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