从 Universal Windows 应用程序打开外部应用程序
Open external application from Universal Windows app
当用户在我的应用程序中选择 "video call" 选项时,我需要打开一个外部应用程序(Cisco Jabber Video for Telepresence)。
我发现无法在通用应用程序中打开可执行文件的位置...
我还发现我无法打开未与任何 URI 方案关联的应用程序...
有什么办法可以做到这一点吗?
感谢 Microsoft MVA,向我们提供了一些选项(您只需要 fiddle 它们):
方案一(this Microsoft MVA tutorial推荐):
如果你想启动一个特定的应用程序,你必须创建一个 URI 方案注册,只有你要启动的特定应用程序可以处理。
使用 Launcher
,您可以调用指定的 URI,该 URI 将仅由一个应用程序处理(例如 my-cool-uri-scheme://start?param1=123¶m2=ABC
)。
注意:用户将始终拥有以指定 URI 启动哪个应用程序的最终选择(这就是 Microsoft 推荐此解决方案的原因)。
以下解决方案很可能只适用于企业环境!
解决方案 2(清理 解决方法):
您必须编写一个代理 Windows 应用程序。
此代理应用程序(几乎与解决方案 #1 中一样)使用特定的文件扩展名注册自己。
从您的 UWP 应用程序中,您可以调用一个包含您的参数的假想文件路径(例如 C:/Users/CURRENTUSER/AppData/Roaming/YOURAPP/PARAM1/PARAM2/PARAM3/open.my-cool-extension
) - 或者事件文件本身包含参数(例如 XML 或 RESTful)。
然后,处理应用程序将使用这些信息以您给定的参数启动特定应用程序(使用 Process.Start
)。
解决方案 3(脏 解决方法):
您必须编写一个观察 Windows 应用程序。
此应用程序创建一个 FileSystemWatcher
侦听特定文件夹。那么为什么这是 dirty 解决方法呢?因为你...
- 必须为您的 UWP 应用程序创建一个
FileSystemWatcher
永久监视特定的放置目录。
- 用户无法控制将要发生的事情(无法覆盖应用程序以启动)
当用户在我的应用程序中选择 "video call" 选项时,我需要打开一个外部应用程序(Cisco Jabber Video for Telepresence)。
我发现无法在通用应用程序中打开可执行文件的位置...
我还发现我无法打开未与任何 URI 方案关联的应用程序...
有什么办法可以做到这一点吗?
感谢 Microsoft MVA,向我们提供了一些选项(您只需要 fiddle 它们):
方案一(this Microsoft MVA tutorial推荐):
如果你想启动一个特定的应用程序,你必须创建一个 URI 方案注册,只有你要启动的特定应用程序可以处理。
使用 Launcher
,您可以调用指定的 URI,该 URI 将仅由一个应用程序处理(例如 my-cool-uri-scheme://start?param1=123¶m2=ABC
)。
注意:用户将始终拥有以指定 URI 启动哪个应用程序的最终选择(这就是 Microsoft 推荐此解决方案的原因)。
以下解决方案很可能只适用于企业环境!
解决方案 2(清理 解决方法):
您必须编写一个代理 Windows 应用程序。
此代理应用程序(几乎与解决方案 #1 中一样)使用特定的文件扩展名注册自己。
从您的 UWP 应用程序中,您可以调用一个包含您的参数的假想文件路径(例如 C:/Users/CURRENTUSER/AppData/Roaming/YOURAPP/PARAM1/PARAM2/PARAM3/open.my-cool-extension
) - 或者事件文件本身包含参数(例如 XML 或 RESTful)。
然后,处理应用程序将使用这些信息以您给定的参数启动特定应用程序(使用 Process.Start
)。
解决方案 3(脏 解决方法):
您必须编写一个观察 Windows 应用程序。
此应用程序创建一个 FileSystemWatcher
侦听特定文件夹。那么为什么这是 dirty 解决方法呢?因为你...
- 必须为您的 UWP 应用程序创建一个
FileSystemWatcher
永久监视特定的放置目录。 - 用户无法控制将要发生的事情(无法覆盖应用程序以启动)