Hi Stefan,
ich habe dieses Problem lösen können. Mit den Berechtigungen hatte es in diesem Fall nichts zu tun. Mein Fehler war, dass ich den Fileprovider manuell in meine
AndroidManifest.template.xml eingefügt habe und damit kam Delphi anscheinend nicht klar. Denn durch das Aktivieren des "Secure File Sharing" Flags in den Projekteinstellungen, übernimmt Delphi das Hinzufügen des Fileproviders vollständig von allein.
Im nächsten Schritt habe ich nun mit Zugriff auf den Ordner
Android/Data/com.test.meineApp/files/Download/meineApp.apk das Update mit folgendem Code durchführen können.
Delphi-Quellcode:
procedure TFMain.InstallAPK(APKFileName:
String);
{$IFDEF ANDROID}
var
Intent: JIntent;
Uri: JNet_Uri;
arch: JFile;
{$ENDIF }
begin
{$IFDEF ANDROID}
if TFile.Exists(APKFileName)
then
begin
arch := TJFile.JavaClass.init(StringToJString(APKFileName));
arch.setReadable(True, False);
if TJBuild_VERSION.JavaClass.SDK_INT >= 24
then
begin
Uri := TJcontent_FileProvider.JavaClass.getUriForFile(TAndroidHelper.Context,
StringToJString(System.Concat(JStringToString(TAndroidHelper.Context.getPackageName), '
.fileprovider')) , arch);
end else
begin
Uri := TJnet_Uri.JavaClass.fromFile(arch);
end;
Intent := TJIntent.Create;
intent.putExtra(TJIntent.JavaClass.EXTRA_NOT_UNKNOWN_SOURCE, True);
Intent.setAction(TJintent.JavaClass.ACTION_VIEW);
Intent.setDataAndType(
Uri,StringToJString('
application/vnd.android.package-archive'));
Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
TAndroidHelper.Context.startActivity(Intent);
end;
{$ENDIF }
end;
Vielleicht hilft dies ja dem einen oder anderen weiter.
LG André
Zu denken, was wir hätten tun können, ist eine Tätigkeit, die uns zu denken geben sollte...