Xamarin Forms UWP中Launcher.LaunchUriAsync调用记事本无响应求助
解决用Launcher打开记事本无响应的问题
问题原因
Launcher.LaunchUriAsync 是用来打开符合URI规范的资源(比如网页、关联格式的文件),直接传入本地exe路径的Uri不符合它的设计场景,因此无法触发执行。另外,即便能启动记事本,原代码也没法把API获取的字符串内容传递给它。
解决方案
步骤1:将API字符串保存为临时文本文件
先把从API拿到的字符串写入一个临时txt文件,让记事本可以直接加载内容:
string apiContent = "从API获取的字符串内容"; string tempTxtPath = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid()}.txt"); File.WriteAllText(tempTxtPath, apiContent);
步骤2:用Launcher打开临时文件
通过Launcher打开这个临时txt文件,系统会自动调用默认文本编辑器(通常就是Windows记事本):
var tempFile = await StorageFile.GetFileFromPathAsync(tempTxtPath); await Launcher.LaunchFileAsync(tempFile);
备选方案:直接启动记事本加载文件(桌面应用适用)
如果是WPF/WinForms这类桌面应用,也可以用Process.Start直接启动记事本并指定要打开的临时文件:
Process.Start(new ProcessStartInfo { FileName = "notepad.exe", Arguments = tempTxtPath });
注意事项
- 使用完临时文件后可以删除,避免占用磁盘空间:
File.Delete(tempTxtPath);(要确保文件已经被关闭) - 如果是UWP应用,需确认有文件访问权限,临时路径一般属于允许访问的区域。
内容的提问来源于stack exchange,提问作者Deathgar Vyathemskiy
相关产品推荐
相关产品推荐

