Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Link açma
#1
Windows tarafı kolay, bir kaç satırla bir link adresini butona tıklayıp açabiliyoruz.
Ancak mobil tarafında android ve ios için bir sürü kod gerekiyor "http:..." diye başlayan internet adreslerini açmak için.
Bu işin bir kolayı var mıdır?
Kolay işler çok zor, zor işler çok kolay maalesef delphi de...
Cevapla
#2
merhaba,
windows tarafında nasıl yapıyorsun.
ona göre mobil için düzenleme yapalım.
Cevapla
#3
Denemedim ama belki asagidaki link isinizi gorur.
https://www.developpeur-pascal.fr/p/_200...onkey.html
Cevapla
#4
(18-10-2018, Saat: 14:27)meko Adlı Kullanıcıdan Alıntı: merhaba,
windows tarafında nasıl yapıyorsun.
ona göre mobil için düzenleme yapalım.

Windows tarafından kastım VCL.
ShellExecute(Handle,
'open',
PChar(AcilacakAdres.Text),
nil,
nil,
sw_ShowMaximized);

(18-10-2018, Saat: 14:28)klavye Adlı Kullanıcıdan Alıntı: Denemedim ama belki asagidaki link isinizi gorur.
https://www.developpeur-pascal.fr/p/_200...onkey.html
Benim bulduğum çözüm de bu şimdilik. Ama belki daha kısa bir yolu vardır diye bu konuyu açtım. Eğer başka çözümler gelmezse bu kodları bir class haline getirip kullanmak gerekecek.

(18-10-2018, Saat: 14:28)klavye Adlı Kullanıcıdan Alıntı: Denemedim ama belki asagidaki link isinizi gorur.
https://www.developpeur-pascal.fr/p/_200...onkey.html

Yukarıdaki kodu class şeklinde kullandığımda Androidde çalışıyor. Ios deneyemiyorum şu anda. Windows tarafında ise şu hatayı veriyor:

Debug Output:
onecoreuap\shell\windows.storage\execassoc.cpp(4587)\windows.storage.dll!75DA9BF4: (caller: 75C40725) ReturnHr(2) tid(2454) 8007007E Belirtilen modül bulunamadı.
    CallContext:[\InvokeAssociatedProgram]
Cevapla
#5
Windows'ta, Android'de ve de IOS'ta çalışması için yukarıdaki linkte verilen kodlar pek de uzun değil bence Smile
There's no place like 127.0.0.1
WWW
Cevapla
#6
Uzunlukla tam olarak anlatmak istediğim şeyi kastedemedim galiba.
Örneğin standart pek çok iş için ActionList nesnesini kullanıyorum. Bu da her mobil uygulamada kullanılacak bir fonksiyon. Hiç kullanmazsanız program hakkında açıklamalar bulunan bir sayfada kendi web sitenizin linkini verirsiniz.
Standart olarak herkesin kullandığı, kullanacağı özellikler ActionList gibi bir nesnede toplanırsa çok daha pratik ve çekici olur.
Aynı şeyi fotoğraf konusunda da yaşadım. Daha önce forumda Exif başlıklı bir konu açtım. Örneğin mobil bir uygulamada herkes fotoğraf çekimini ve galeriden resim görüntüleme özelliğini bir şekilde kullanır. Bunlar ActionList içine alınmış. Ancak okunan resmin Exif bilgisine göre doğru görüntülenmesi atlanmış. Hiç kimse galeriden çağırdığı, ya da çektiği fotoğrafın ters görünmesini istemez.
Halen de bu exif olayını çözebilmiş değilim.
Yani anlatmaya çalıştığım şey şu. Standart fonksiyonlar çoğalmalı ve daha da çok geliştirilmeli diye düşünüyorum. Bu programcılığın yaratıcı yönünü baltalamaz, aksine süreci hızlandırır.
Bazen herkesin kullandığını düşündüğüm şeyleri sadece kendimin kullandığı hissine kapılıyorum Delphi ile ilgili olarak. Fotoğraf çekme, galeriden resim görüntüleme, link açma vb.....
Cevapla
#7
Merhaba,
Windows, Android ve iOS için Open URL kütüphanesi.
DelphiCan'dır!
Cevapla
#8
(18-10-2018, Saat: 15:52)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Windows, Android ve iOS için Open URL kütüphanesi.

Windows10 da sıkıntı var yine. Yukarıda yazdığım hatayı veriyor.
Cevapla
#9
(18-10-2018, Saat: 16:15)nehirnnn Adlı Kullanıcıdan Alıntı: Windows10 da sıkıntı var yine. Yukarıda yazdığım hatayı veriyor.
Merhaba,
İlgili kütüphaneyi projeyle aynı klasöre alıp aşağıdaki şekilde denediğimde, mobil ve w10 için sorun yaşamadım.
unit Unit1;

interface

uses
 System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
 FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
 FMX.Controls.Presentation, FMX.StdCtrls,
 OpenViewUrl;// <=========

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
implementation
{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
 OpenURL('http://www.delphican.com');
end;

end.
Cevapla
#10
Aşağıda paylaşılan örnek kütüphane Windows, Android (eski kütüphaneler yeni metodlarla değiştirildi), iOS ve OS X (sonradan eklendi) platformlarında çalışmaktadır.

Yapılan değişiklikler:
openurl.jpg

Çalışan Unit:

unit OpenViewUrl;

interface

function OpenURL(const URL: string;
 const DisplayError: Boolean = False): Boolean;

implementation

uses
 IdURI, SysUtils, Classes, FMX.Dialogs
{$IF DEFINED(MSWINDOWS)}
   , ShellApi, Windows
{$ELSEIF DEFINED(ANDROID)}
   , Androidapi.JNI.GraphicsContentViewText,
 Androidapi.JNI.App, Androidapi.JNI.Net, Androidapi.Helpers
{$ELSEIF DEFINED(iOS)}
   , iOSapi.Foundation, FMX.Helpers.iOS, Macapi.Helpers
{$ELSEIF DEFINED(MACOS)}
   , Macapi.AppKit, Macapi.Foundation, Macapi.Helpers
{$ENDIF};

function OpenURL(const URL: string;
 const DisplayError: Boolean = False): Boolean;
{$IFDEF ANDROID}
var
 Intent: JIntent;
begin
 Intent := TJIntent.Create;
 Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
 Intent.setData(StrToJURI(URL));
 try
   TAndroidHelper.Activity.startActivity(Intent);
   exit(true);
 except
   on e: Exception do
   begin
     if DisplayError then
       ShowMessage('Error: ' + e.Message);
     exit(False);
   end;
 end;
end;
{$ELSE}
{$IFDEF IOS}

var
 strURL: NSurl;
begin
 strURL := StrToNSUrl(TIdURI.URLEncode(URL));
 if SharedApplication.canOpenURL(strURL) then
 begin
   SharedApplication.OpenURL(strURL);
   exit(true);
 end
 else
 begin
   ShowMessage('Sayfa açılamadı');
   exit(true)
 end;
end;
{$ELSE}
{$IFDEF MACOS}

var
 ws: NSWorkspace;
 strURL: NSurl;
begin
 ws := TNSWorkspace.wrap(TNSWorkspace.OCClass.sharedWorkspace);
 strURL := StrToNSUrl(TIdURI.URLEncode(URL));
 if ws.OpenURL(strURL) then
   exit(true)
 else
 begin
   ShowMessage('Sayfa açılamadı');
   exit(true)
 end;
end;
{$ELSE}
{$IFDEF MSWINDOWS}
begin
 ShellExecute(0, 'open', PWideChar(URL), nil, nil, SW_SHOWNORMAL);
 exit(true);
end;
{$ELSE}
begin
 raise Exception.Create('Not supported!');
end;
{$ENDIF ANDROID}
{$ENDIF IOS}
{$ENDIF MACOS}
{$ENDIF MSWINDOWS}

end.

Kullanımı:
OpenURL('http://www.DelphiCan.com');
DelphiCan'dır!
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  FMX'de Proxy Kullanarak Web Sayfası Açma Sorunu Dmak42 1 581 29-12-2024, Saat: 12:47
Son Yorum: mrmarman
  Datasnap her seferinde Kapatıp Açma gonulali 2 1.546 18-07-2022, Saat: 15:00
Son Yorum: gonulali
  Veri Tabanından dosya açma gonulali 2 1.762 06-07-2021, Saat: 16:36
Son Yorum: COMMANDX
  Wifi ağlarının isimleri ve wifi menüsünü açma 41linea41 3 1.787 27-06-2021, Saat: 09:20
Son Yorum: RAD Coder
  Pdf indirme ve açma gonulali 5 2.855 27-11-2020, Saat: 17:33
Son Yorum: Mr.Developer



Konuyu Okuyanlar: 1 Ziyaretçi