Подскажите, у меня программа проверяет наличие новой версии и выводит уведомление...
Хочу что бы программа сама закачивала APK и запускала его на установку...
Скачать по идее не проблема, а вот как показать окно юзеру, мастера установки этого АПК ?
Можно какой нибудь образец на Delphi ?
Пока вот что имею:
procedure TUpdateAppThread.Execute;
CONST
url_download_nsis_script = 'https://.com/android/.apk';
var
http: TNetHTTPClient;
q: tmemorystream;
begin
q := tmemorystream.Create;
http := TNetHTTPClient.Create(nil);
try
try
http.Get(PChar(url_download_nsis_script), q);
q.Position := 0;
q.SaveToFile(TPath.Combine(TPath.GetDocumentsPath, 'hs.update.apk'));
if FileExists(TPath.Combine(TPath.GetDocumentsPath, 'hs.update.apk')) then
Synchronize(StartUpdateApp);
except
Synchronize(ErrorUpdateApp);
end;
finally
q.Free;
http.Free;
end;
end;
скачал APK, ошибок нет вроде, все ок...
Запихиваю апк в jnet_uri
Procedure StartUpdateApp;
var
ApkFile: JFile;
ApkUri: Jnet_Uri;
path, filename: string;
begin
try
filename := TPath.Combine(TPath.GetDocumentsPath, 'hs.update.apk');
ApkFile := TJfile.JavaClass.init(StringToJString(filename));
ApkUri := TAndroidHelper.JFileToJURI(ApkFile);
StartActivity(ApkUri);
except
on E: Exception do
ShowMessage(E.ClassName + 'StartUpdateApp поднята ошибка, с сообщением : '
+ E.Message);
end;
UpdateForm.Label1.Text := 'Download ok.';
end;
Запускаю активность...
procedure StartActivity(ApkUri: Jnet_Uri);
var
Intent: JIntent;
begin
try
Intent := TJIntent.Create();
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK or
TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP or
TJIntent.JavaClass.FLAG_GRANT_WRITE_URI_PERMISSION or
TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
Intent.setDataAndType(ApkUri,
StringToJString('application/vnd.android.package-archive'));
TAndroidHelper.Activity.StartActivity(Intent);
except
on E: Exception do
ShowMessage(E.ClassName + 'StartActivity поднята ошибка, с сообщением : '
+ E.Message);
end;
end;
сейчас у меня ошибка в процедуре StartUpdateApp
Java type Jcontent_fileprovider could not be found.
Разрешений пока не каких не запрашивал.... Сохраняю в TPath.Combine(TPath.GetDocumentsPath, 'hs.update.apk') сюда я так понимаю разрешения не нужны...