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

如何让Delphi 12.1开发的Android和iOS应用关联.PGN文件以实现下载后自动打开

如何让Delphi 12.1开发的Android和iOS应用关联.PGN文件以实现下载后自动打开

你好!我刚好做过类似的文件关联配置,Delphi 12.1对Android和iOS的文件关联都有直接的项目选项支持,下面分平台给你一步步说怎么做:

Android平台配置步骤

  • 打开你的Delphi项目,依次点击顶部菜单 Project > Options,在左侧面板找到 Application > Manifest(或者直接定位到 Android 分类下的 Manifest 选项)
  • 我们需要添加Intent过滤器来响应PGN文件的打开请求:
    1. 点击 Add Intent Filter 按钮,创建一个新的过滤器
    2. 在 Actions 列表中添加 android.intent.action.VIEW —— 这个动作表示应用要处理“查看”文件的请求
    3. 在 Categories 列表中添加两个值:android.intent.category.DEFAULT 和 android.intent.category.BROWSABLE —— 前者让应用成为系统默认候选之一,后者允许从浏览器、下载器等场景唤起应用
    4. 切换到 Data 标签页,配置文件匹配规则:
      • 设置 MIME Type 为 application/x-chess-pgn(这是PGN文件的标准MIME类型,如果后续测试不生效,可以试试 text/plain,因为PGN本质是纯文本格式)
      • 在 Scheme 里同时添加 content 和 file —— 覆盖本地存储、下载目录等不同来源的文件请求
      • 在 Path Patterns 中添加 *.pgn,确保只匹配PGN扩展名的文件
  • 如果你更习惯直接编辑清单模板文件,可以找到项目目录下的 AndroidManifest.template.xml,在 <application> 标签内的主 <activity> 节点中插入这段代码:
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:mimeType="application/x-chess-pgn" />
    <data android:scheme="content" />
    <data android:scheme="file" />
    <data android:pathPattern=".*\\.pgn" />
</intent-filter>
  • 配置完成后,记得点击 Project > Clean 清理缓存,再重新编译部署到Android设备。之后下载PGN文件时,系统就会把你的应用列在可打开的应用列表里了

iOS平台配置步骤

iOS的文件关联需要通过Info.plist配置自定义UTI(统一类型标识符)和文档类型,Delphi 12.1支持可视化配置,也可以直接编辑plist文件:

  • 打开项目选项:Project > Options,左侧面板找到 Version Info > iOS Info.plist
  • 首先添加自定义UTI(因为PGN不是系统默认识别的文件类型):
    1. 点击 Add 按钮,选择 Imported UTIs 类型
    2. 为这个UTI填写以下属性:
      • UTTypeIdentifier:填一个唯一的反向域名格式标识符,比如 com.yourcompany.yourapp.pgn(避免和其他应用的UTI冲突)
      • UTTypeDescription:比如 Chess PGN File(这个描述会显示在系统的“打开方式”菜单里)
      • UTTypeConformsTo:选择 public.text(PGN是纯文本格式,继承这个系统UTI能获得更好的兼容性)
      • UTTypeTagSpecification:展开后添加两个子属性:
        • public.filename-extension:填 pgn
        • public.mime-type:填 application/x-chess-pgn
  • 接下来添加文档类型,让系统知道你的应用能处理这个UTI:
    1. 点击 Add 按钮,选择 Document Types 类型
    2. 填写以下属性:
      • CFBundleTypeName:同样填 Chess PGN File
      • LSHandlerRank:选择 Default 或者 Alternate(Default 表示优先候选,Alternate 作为备选)
      • LSItemContentTypes:添加刚才自定义的UTI(比如 com.yourcompany.yourapp.pgn)
  • 如果你直接编辑Info.plist文件,可以在 <dict> 节点内插入这段配置:
<key>UTImportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeIdentifier</key>
        <string>com.yourcompany.yourapp.pgn</string>
        <key>UTTypeDescription</key>
        <string>Chess PGN File</string>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.text</string>
        </array>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>pgn</string>
            </array>
            <key>public.mime-type</key>
            <string>application/x-chess-pgn</string>
        </dict>
    </dict>
</array>
<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>Chess PGN File</string>
        <key>LSHandlerRank</key>
        <string>Default</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.yourcompany.yourapp.pgn</string>
        </array>
    </dict>
</array>
  • 清理项目缓存后编译部署到iOS设备,之后下载PGN文件时,在文件应用或下载管理器里选择“打开方式”,你的应用就会出现在可选列表中了

额外注意事项

  • 不管是Android还是iOS,配置完成后一定要执行 Project > Clean 清理缓存,避免旧配置残留导致不生效
  • 测试时尽量用真实设备,模拟器对文件关联的兼容性不如实体设备稳定
  • 如果你需要在应用内读取打开的PGN文件内容:
    • Android可以在 OnCreate 或 OnNewIntent 方法中通过 Intent 获取文件URI,再通过内容解析器读取文件
    • iOS可以在 Application:openURL:options: 或 Application:openURL:sourceApplication:annotation: 方法中处理文件URL,然后读取内容

备注:内容来源于stack exchange,提问作者Mike at Bookup

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 11:13:09