Otwarcie strony www na domyślnej przeglądarce .JAK?

0

Witam . Mam pytanie . W jaki sposób otworzyć stronę www w domyślnej przeglądarce . Pod Windows jest kilka sposobów , ale mnie potrzeba z aplikacji dla Androida . Chodzi o to żeby z aplikacji którą robię , po kliknięciu w np button , otwarła się domyślna przeglądarka a na niej strona www której url będzie zapisane np w jakimś stringu . Szukam także takie samego sposobu tylko że na wysłanie e-mail tzn otworzenie domyślnej aplikacji do obsługi poczty z wpisanym adresem który także będzie gdzieś w stringu .
Pisze w Delphi XE8 .

Dziękuje

1

A nie możesz tej strony otworzyć w jakimś webview?

0

Wolał bym jednak żeby otwarła się domyślna . Jak nie będzie się dało w łatwy sposób tego zrobić to pewnie tak to zrobię . pÓÓÓÓki co czekam jeszcze cierpliwie , może ktoś pomoże .

0

Zapomniałem napisać ze jestem dość początkujący wiec to co podał AnyKtokolwiek nie mogę rozkminić .
takie coś:

Windows.ShellExecute(nil, 'open', 'https://4programmers.net', nil, nil, SW_SHOWNORMAL);

było by najlepsze ale na androida

0

Ja to robię tak:

Intent := TJIntent.Create;
Intent.SetAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.SetData(StrToJURI('https://strona.pl'));
TAndroidHelper.Activity.StartActivity(Intent);

a gdy chcę otworzyć program pocztowy z wpisanym adresem e-mail i tematem:

Intent := TJIntent.Create;
Intent.SetAction(TJIntent.JavaClass.ACTION_SENDTO);
Intent.SetData(StrToJURI('mailto:[email protected]?subject=temat'));
TAndroidHelper.Activity.StartActivity(Intent);

oczywiście jeszcze trzeba zdefiniować:

var
  Intent: JIntent;

W sekcji uses mam to, ale nie pamiętam czy wszystko jest wymagane :)

Androidapi.JNI.JavaTypes, Androidapi.Helpers, Androidapi.JNI.App, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText
0

Error

procedure Tform1.Button1Click(Sender: TObject);
  var

 Intent: JIntent;
begin
   Intent := TJIntent.Create;
Intent.SetAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.SetData(StrToJURI('https://strona.pl'));
TAndroidHelper.Activity.StartActivity(Intent); // to jest podkreślone jako błąd

Intent := TJIntent.Create;
Intent.SetAction(TJIntent.JavaClass.ACTION_SENDTO);
Intent.SetData(StrToJURI('mailto:[email protected]?subject=temat'));
TAndroidHelper.Activity.StartActivity(Intent); // to jest podkreślone jako błąd

end;

chyba jeszcze czegoś brakuje w USES

0

TAndroidHelper jest z AndroidAPI.Helpers
Może w starszym Delphi jest w innym unit?
Ja używam Delphi 10.3.2.

EDIT:
Sprawdź jeszcze FMX.Helpers.Android

0

po dodaniu tego

Androidapi.Helpers, FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText, 
Androidapi.JNI.App, Androidapi.JNI.Net, Androidapi.JNI.JavaTypes

to samo .

0

Wklej tu swoją sekcję Uses oraz błąd, który pojawia się podczas próby kompilacji.

0
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Controls.Presentation, FMX.Edit, FMX.EditBox, FMX.SpinBox, FMX.NumberBox,
  FMX.ComboEdit, FMX.ComboTrackBar,FMX.IniFile,ustawienia1,about, FMX.Objects,
  FMX.Effects, FMX.ScrollBox, FMX.Memo,math, System.Math.Vectors,
  FMX.Controls3D, FMX.Objects3D, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdExplicitTLSClientServerBase, IdFTP , IdHTTP,
   Androidapi.Helpers, FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.App, Androidapi.JNI.Net, Androidapi.JNI.JavaTypes ;
procedure Tform1.Button1Click(Sender: TObject);
  var

 Intent: JIntent;
begin
   Intent := TJIntent.Create;
Intent.SetAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.SetData(StrToJURI('https://strona.pl'));
TAndroidHelper.Activity.StartActivity(Intent); // to jest podkreślone jako błąd

end;

taki komunikat błedu

[DCC Error] Kalkulator.pas(147): E2003 Undeclared identifier: 'TAndroidHelper'
[DCC Error] Kalkulator.pas(147): E2066 Missing operator or semicolon
[DCC Warning] Kalkulator.pas(650): W1000 Symbol 'Quit' is deprecated
[DCC Fatal Error] KalkulatorN.dpr(6): F2063 Could not compile used unit 'Kalkulator.pas'
Failed
0

Panowie mam takie proste pytanie . Pisze kod na dwie platformy . Ale podczas kompilacji chciałbym aby dla win32 pomijał jakaś cześć kodu która jest przeznaczona dla aplikacji na androida . Są jakieś znaczniki które się wstawia w kod i wtedy np dla wersji na win zaznaczony fragment jest pomijany przez kompilator dla androida i odwrotni . Jak to się robi bo nie mogę tego znaleźć , a wiem ze tak można bo widziałem na jakimś przykładowym kodzie .. .

2

Oczywiście że są takie ”znaczniki” – to dyrektywy kompilatora. Poczytaj o $IF, $IFDEF, $IFNDEF itd.

2

Są dyrektywy kompilatora można np.:

{$IFDEF MSWINDOWS}
//kod dla Windows
{$ENDIF}

{$IFDEF ANDROID}
//kod dla Android
{$ENDIF}

albo

{$IFDEF MSWINDOWS}
//kod dla Windows
{$ELSE}
//kod dla Android i innych systemów
{$ENDIF}
0

Albo kombinacje za pomocą $IF i DEFINED. Polecam przeczytać artykuł Conditional compilation – znajdziesz w nim tabelki z symbolami i przykłady użycia różnych dyrektyw.

0

Mistrzostwo świata . Dziękuje Panowie .

1 użytkowników online, w tym zalogowanych: 0, gości: 1