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

Otwarcie strony www na domyślnej przeglądarce .JAK?
R2
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Będzin
  • Postów: 45
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

UglyMan
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2206
1

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

R2
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Będzin
  • Postów: 45
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 .

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
R2
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Będzin
  • Postów: 45
0

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

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

było by najlepsze ale na androida

robertz68
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Zielona Góra
SK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 101
0

Ja to robię tak:

Kopiuj
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:

Kopiuj
Intent := TJIntent.Create;
Intent.SetAction(TJIntent.JavaClass.ACTION_SENDTO);
Intent.SetData(StrToJURI('mailto:adres@email.pl?subject=temat'));
TAndroidHelper.Activity.StartActivity(Intent);

oczywiście jeszcze trzeba zdefiniować:

Kopiuj
var
  Intent: JIntent;

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

Kopiuj
Androidapi.JNI.JavaTypes, Androidapi.Helpers, Androidapi.JNI.App, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText
R2
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Będzin
  • Postów: 45
0

Error

Kopiuj
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:adres@email.pl?subject=temat'));
TAndroidHelper.Activity.StartActivity(Intent); // to jest podkreślone jako błąd

end;

chyba jeszcze czegoś brakuje w USES

SK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 101
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

R2
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Będzin
  • Postów: 45
0

po dodaniu tego

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

to samo .

SK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 101
0

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

R2
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Będzin
  • Postów: 45
0
Kopiuj
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 ;
Kopiuj
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

Kopiuj
[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
R2
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Będzin
  • Postów: 45
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 .. .

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270
2

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

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
2

Są dyrektywy kompilatora można np.:

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

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

albo

Kopiuj
{$IFDEF MSWINDOWS}
//kod dla Windows
{$ELSE}
//kod dla Android i innych systemów
{$ENDIF}
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12270
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.

R2
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Będzin
  • Postów: 45
0

Mistrzostwo świata . Dziękuje Panowie .

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.