2014-10-21 5 views
0

Доброе утро,Открыть URL в XE6 FireMonkey IOS-DELPHI

Я пытаюсь сделать кросс-платформенных приложений как для Android и IOS, чтобы открыть URL, который будет проходить в качестве параметра в браузере по умолчанию в андроид I достигли, используя следующий код:

{ Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, 
    TJnet_Uri.JavaClass.parse(StringToJString 
    ('http://www.***.com')); 
    SharedActivity.startActivity(Intent); } 

но в IOS не знаю, как открыть URL в браузере по умолчанию, я искал тысячи страниц, которые используют методы, но ни один не помог мне, если вы могли бы помочь мне, был бы очень признателен!

ответ

1
uses Androidapi.Helpers; 

procedure TForm1.SpeedButton1Click(Sender: TObject); 
var Intent: JIntent; 
begin 
    Intent := TJIntent.Create; 
    Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); 
    Intent.setData(StrToJURI('http://www.website.com.br/index.php')); 
    SharedActivity.startActivity(Intent); 
end; 
1

Вот счастливый путь для того, что я сделал (за исключением обработки ошибок и т.д.)

uses 
//... 
IdURI, 
{$IFDEF ANDROID} 
    Androidapi.Helpers, FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText, 
    Androidapi.JNI.App, Androidapi.JNI.Net, Androidapi.JNI.JavaTypes 
{$ENDIF ANDROID} 

{$IFDEF MSWINDOWS} 
    Winapi.ShellAPI, Winapi.Windows 
{$ENDIF MSWINDOWS} 

{$IFDEF IOS} 
    Macapi.Helpers, iOSapi.Foundation, FMX.Helpers.iOS 
{$ENDIF IOS} 
    ; 

и

//... 
procedure TForm1.launchBrowser(); 
var 
    myURL: string; 
{$IFDEF ANDROID} 
    Intent: JIntent; 
{$ENDIF ANDROID} 

{$IFDEF IOS} 
    NSU: NSUrl; 
{$ENDIF IOS} 
begin 
    myURL := 'http://www.example.com'; 
{$IFDEF MSWINDOWS} 
    ShellExecute(0, 'OPEN', PChar(myURL), '', '', SW_SHOWNORMAL); 
{$ENDIF MSWINDOWS} 

{$IFDEF IOS} 
    NSU := StrToNSUrl(TIdURI.URLEncode(myURL)); 
    if SharedApplication.canOpenURL(NSU) then 
    begin 
    SharedApplication.openUrl(NSU); 
    end; 
{$ENDIF IOS} 

{$IFDEF ANDROID} 
    Intent := TJIntent.Create; 
    Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); 
    Intent.setData(StrToJURI(myURL)); 
    TAndroidHelper.Activity.startActivity(Intent); 
{$ENDIF ANDROID} 
end; 

Примечание : «SharedActivity» устарела (по крайней мере, в 10/Seatle). Замена, кажется, «TAndroidHelper.Activity»

+0

SharedActivity все еще работает для меня в Delphi 10 Seattle – Remi

+2

@Remi - вы правы, это действительно работает, но я получаю следующее предупреждение «[DCC Warning] FILENAME.pas (строка #): W1000 Символ «SharedActivity» устарел: «Используйте TAndroidHelper.Activity», когда вы строите Delphi 10 Seattle. И поскольку мне нравится, когда мои компиляции предупреждают меньше, я решил исправить это сейчас, а не ждать, пока он будет удален Embarcadero позже: ^) – BIBD

Смежные вопросы