Xamarin.Mac 双击关联文件启动应用时如何获取该文件的完整路径
解决方案
该功能确实需要在AppDelegate.cs中编写对应逻辑实现,需分别覆盖两种触发场景:
- 应用未启动时,双击
.atc文件唤起应用 - 应用已处于运行状态时,双击
.atc文件
代码实现示例
1. 启动时获取文件路径
重写FinishedLaunching方法,从启动参数中读取关联文件路径:
public override bool FinishedLaunching(NSApplication app, NSDictionary options) { // 检查是否通过打开关联文件启动应用 if (options.ContainsKey(NSApplication.LaunchUrlsKey)) { var fileUrls = options[NSApplication.LaunchUrlsKey] as NSUrl[]; if (fileUrls != null && fileUrls.Length > 0) { // 获取文件本地完整路径 string atcFilePath = fileUrls[0].Path; // 此处补充你的文件处理逻辑 } } return base.FinishedLaunching(app, options); }
2. 运行中获取文件路径
重写OpenUrls方法,处理应用运行时打开关联文件的请求:
public override void OpenUrls(NSApplication application, NSUrl[] urls) { foreach (var url in urls) { if (url.PathExtension?.ToLower() == "atc") { string atcFilePath = url.Path; // 此处补充你的文件处理逻辑 } } }
提示:如果你的应用支持同时打开多个
.atc文件,直接遍历返回的urls数组处理所有路径即可,无需限制仅读取第一个元素。
内容的提问来源于stack exchange,提问作者hibara
相关产品推荐
相关产品推荐

