【问题标题】:Open external application from Universal Windows app从通用 Windows 应用程序打开外部应用程序
【发布时间】:2015-11-26 15:25:13
【问题描述】:

当用户在我的应用程序中选择“视频通话”选项时,我需要打开一个外部应用程序(Cisco Jabber Video for Telepresence)。

我发现无法在通用应用中打开可执行文件的位置...

我还发现当应用程序没有与任何 URI 方案关联时,我无法打开它...

有什么办法可以做到吗?

【问题讨论】:

    标签: windows-store-apps uwp


    【解决方案1】:

    感谢 Microsoft MVA,为我们提供了一些选项(您只需将它们弄出来):

    解决方案 1(this Microsoft MVA tutorial 推荐):
    如果要启动特定应用程序,则必须创建 URI 方案注册,只有您要启动的特定应用程序才能处理。 使用Launcher,您可以调用仅由一个应用程序处理的指定URI(例如my-cool-uri-scheme://start?param1=123&param2=ABC)。

    注意:用户始终可以最终选择使用指定 URI 启动哪个应用程序(这就是微软推荐此解决方案的原因)。

    以下解决方案很可能只适用于企业环境!

    解决方案 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 解决方法呢?因为你……

    1. 必须为你的 UWP 应用创建一个FileSystemWatcher 永久监视特定的放置目录。
    2. 用户无法控制会发生什么(无法​​覆盖应用程序来启动)

    【讨论】:

    • 解决方案 1 可以。我想到了解决方案 2,但我认为它很脏。你指的是什么教程?
    • @vrwim 在这个MVA course,它是主题#15
    • 遗憾的是,我不得不选择选项 #2,因为非商店应用似乎没有包名...
    • 我不明白解决方案#2。当您说“使用特定的文件扩展名注册自己”时,您是什么意思?代理 Windows 应用程序可能是控制台应用程序?
    • @Rahnzo 完全正确。
    猜你喜欢
    • 2017-02-15
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多