You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 10.2.2 Firemonkey Android:如何从应用打开浏览器访问URL?

解决Delphi 10.2.2 Firemonkey Android应用无法打开系统浏览器的问题

我来帮你搞定这个头疼的问题!在Delphi 10.2.2的Firemonkey环境下开发Android应用,要唤起系统浏览器打开指定URL,核心就是调用Android的Intent机制,可能你之前看的官方示例涵盖场景太多,反而没抓住最关键的点。咱直接上可运行的方案:

核心实现步骤

1. 引入必要单元

在你的Form或者代码单元的uses部分添加这些Android相关单元:

uses
  Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Net, 
  Androidapi.JNI.JavaTypes, Androidapi.Helpers, FMX.Helpers.Android;

2. 封装打开浏览器的函数

添加这个专门处理浏览器唤起逻辑的函数:

procedure OpenURLInBrowser(const AURL: string);
var
  LIntent: JIntent;
  LUri: Jnet_Uri;
begin
  {$IFDEF ANDROID}
  // 先校验URL格式,必须带http/https前缀
  if StartsText('http://', AURL) or StartsText('https://', AURL) then
  begin
    // 将字符串URL转换为Android识别的Uri对象
    LUri := StrToJURI(AURL);
    // 创建ACTION_VIEW类型的Intent,告诉系统要查看一个链接资源
    LIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, LUri);
    // 检查系统是否有能响应这个Intent的应用(避免无浏览器时崩溃)
    if SharedActivityContext.getPackageManager.queryIntentActivities(LIntent, 0).size > 0 then
    begin
      // 启动Intent,唤起系统默认浏览器
      SharedActivity.startActivity(LIntent);
    end
    else
    begin
      ShowMessage('未找到可用的浏览器应用');
    end;
  end
  else
  begin
    ShowMessage('请输入合法的HTTP/HTTPS链接');
  end;
  {$ENDIF}
end;

3. 调用函数打开URL

在你需要触发打开浏览器的事件里(比如按钮点击)直接调用:

procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenURLInBrowser('https://www.example.com');
end;

关键细节说明

  • Intent的ACTION_VIEW:这是Android系统的标准动作,用于请求查看指定内容,当内容是http/https链接时,系统会自动匹配浏览器应用处理。
  • 应用可用性检查:queryIntentActivities方法能确认是否有应用响应这个Intent,避免因用户手机无浏览器导致崩溃。
  • URL格式要求:必须带http://或https://前缀,否则系统无法识别该用什么应用打开字符串。

为什么官方示例没帮到你?

官方的Intents示例覆盖了打电话、发邮件等多种场景,内容相对繁杂,而打开浏览器是最基础的场景,提炼上面的核心代码就能直接使用,不用纠结示例里的其他复杂逻辑。

内容的提问来源于stack exchange,提问作者El Diablo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:23:59