AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Android APP - send via BroadcastChannel to website

Android APP - send via BroadcastChannel to website

Ein Thema von erich.wanker · begonnen am 17. Mai 2019 · letzter Beitrag vom 17. Mai 2019
Antwort Antwort
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
345 Beiträge
 
Delphi XE4 Professional
 
#1

Android APP - send via BroadcastChannel to website

  Alt 17. Mai 2019, 10:34
Hallo ..

ich bräuchte eine Android App, wo nix anderes als folgendes passiert:

1.) App hat in Titlebar rechts oben ein "x" zum beenden

2.) Ein Fullscreen-Webbrowser-Componente mit fixer URL (www.meine-webseite.at/meine_ISAPI_Anwendung.dll)

3.) Wenn der Android Back Button gedrückt wird - wird nicht das Programm geschlossen, sondern via BroadcastChannel eine Information an die Webbrowser-Componente gesendet...

Wie kann ich Punkt 3 realisieren?

In meiner ISAPI Anwendung regle ich dann die BroadcastChannel-Information situationsbedingt..




in meiner ISAPI:

Erstellen tue ich den BroadcastChannel via:
if ("BroadcastChannel" in window) { var messageReceiver= new BroadcastChannel("Consumer"); }


Den Listener leite ich auf ein ajaxRequest um:
if ("BroadcastChannel" in window) { messageReceiver.onmessage = function(event) {  ajaxRequest(MainForm.form,''' + event_name + ''',[''param0=''+event.data+'''']); } }

Senden tue ich via:
if ("BroadcastChannel" in window) { broadcaster.postMessage("' + event_data + '"); }




Der Original-Quelltext meiner ISAPI DLL:

Delphi-Quellcode:
procedure TMainForm.create_Broadcast_and_listener;
var
  event_name: String;
begin
  event_name := 'MENUE';
  UniSession.AddJS('if ("BroadcastChannel" in window) { var messageReceiver= new BroadcastChannel("Consumer"); }');
  UniSession.AddJS('if ("BroadcastChannel" in window) { messageReceiver.onmessage = function(event) { ajaxRequest(MainForm.form,''' + event_name + ''',[''param0=''+event.data+'''']); } }');

end;

procedure TMainForm.send_broadcast(event_data: String);
begin
  UniSession.AddJS('if ("BroadcastChannel" in window) { var broadcaster = new BroadcastChannel("Consumer"); }');
  UniSession.AddJS('if ("BroadcastChannel" in window) { broadcaster.postMessage("' + event_data + '"); }');
end;


procedure TMainForm.UniFormAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings);
begin
  // Broadcast Info ....
 if EventName = 'MENUEthen
 begin
 showmessage(parameter_0);
 ....
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
1.946 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Android APP - send via BroadcastChannel to website

  Alt 17. Mai 2019, 11:08
Vielleicht ilft dir das hier weiter ?
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
345 Beiträge
 
Delphi XE4 Professional
 
#3

AW: Android APP - send via BroadcastChannel to website

  Alt 17. Mai 2019, 11:26
Das Hardware Back - denke ich - sollte so aussehen (ungetestet):

(aber WIE sende ich via BroadcastChannel ?)

Delphi-Quellcode:
uses FMX.Platform,FMX.VirtualKeyboard,FMX.Helpers.Android;

procedure THeaderFooterForm.FormKeyUp(Sender: TObject; var Key: Word;
  var KeyChar: Char; Shift: TShiftState);

var FService : IFMXVirtualKeyboardService;
begin
  if Key = vkHardwareBack then
    begin
      TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));
      if (FService <> nil) and (vksVisible in FService.VirtualKeyBoardState) then
        begin
          // Back button pressed, keyboard visible, so do nothing...
          key:=0;
        end
      else
        begin
          key:=0;
??????.. Sende via BroadcastChannel : broadcaster.postMessage("_mein_hardware_back");
        end;
     end
..
.
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \

Geändert von erich.wanker (17. Mai 2019 um 11:29 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.682 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Android APP - send via BroadcastChannel to website

  Alt 17. Mai 2019, 14:29
Kann die Frage auch so formuliert werden?

"Wie kann ich aus einer Delphi/FMX Anwendung auf einen Webbrowser (der eine Android WebView kapselt) zugreifen und ihn JavaScript-Code ausführen lassen?"

Dann sollte das hier weiterhelfen:

https://stackoverflow.com/questions/...ndroid-webview
Michael Justin

Geändert von mjustin (17. Mai 2019 um 14:31 Uhr)
  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 04:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf