【问题标题】:How do I open URLs, PDFs, etc. with the default apps?如何使用默认应用打开 URL、PDF 等?
【发布时间】:2013-09-18 13:35:02
【问题描述】:

我正在使用 Delphi XE5 开发 Android 应用程序,我想知道如何在默认浏览器中打开 URL,以及使用默认阅读器打开 PDF 文件。 Windows开发,我用ShellExecute,但是Android和iOS我应该用什么?

【问题讨论】:

    标签: android delphi delphi-xe5


    【解决方案1】:

    对于这些类型的 pf 任务,您可以使用 Intent 类,它在 Delphi 中由 JIntent 接口表示。

    试试这些示例

    打开一个网址

    uses
      Androidapi.JNI.GraphicsContentViewText,
      FMX.Helpers.Android;
    
    
    procedure TForm3.Button1Click(Sender: TObject);
    var
      Intent: JIntent;
    begin
      Intent := TJIntent.Create;
      Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
      Intent.setData(StrToJURI('http://www.google.com'));
      SharedActivity.startActivity(Intent);
    end;
    

    打开一个 PDF 文件

    uses
      Androidapi.JNI.GraphicsContentViewText,
      Androidapi.JNI.JavaTypes,
      FMX.Helpers.Android;
    
    
    procedure TForm3.Button1Click(Sender: TObject);
    var
      Intent: JIntent;
    begin
      Intent := TJIntent.Create;
      Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
      Intent.setDataAndType(StrToJURI('filepath'),  StringToJString('application/pdf'));
      SharedActivity.startActivity(Intent);
    end;
    

    【讨论】:

    • 是否有适用于所有平台的包装器?对于简单的默认操作,编写一个应该不会太难,但我想知道是否有任何现有的努力来创建它。
    • @LeonardoHerrera 如果有这样的事情,它不是 FMX 的一部分。
    • @LeonardoHerrera:这并不难。我不做 iOS 或 OSX,但我有这两个版本,现在可以在 Android、Win32 和 Win64 上运行;根据 Rodrigo 的代码在这里开始,大约花了 10 分钟来编写和另外 20 分钟来测试。
    • @RRUZ 我使用这些代码,但在 android 中调用这些函数时应用程序崩溃
    • 如果你使用 XE6 向上使用 Androidapi.Helpers 而不是 FMX.Helpers.Android
    【解决方案2】:

    n00b 这里无法解决如何向已针对上一个答案发布的 cmets 集添加评论,但我使用这个,这是主题的另一个变体,使用构造函数参数:

    procedure LaunchURL(const URL: string);
    var
      Intent: JIntent;
    begin
      Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,
        TJnet_Uri.JavaClass.parse(StringToJString(URL)));
      SharedActivity.startActivity(Intent);
    end;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 2014-12-06
      • 2019-01-26
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多