【问题标题】:Can't launch windows phone app with a custom url scheme无法使用自定义 url 方案启动 windows phone 应用程序
【发布时间】:2014-07-09 22:15:01
【问题描述】:

我正在尝试编写一个应用程序,当用户单击具有特定 url 的链接时自动启动(应该类似于“myscheme://myurl”)

我按照此链接上的说明进行操作 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206987(v=vs.105).aspx 但是,它不起作用

这是我的代码的样子

在 WMAppManifest.xml 文件中,我在标记之后添加了这个

<Extensions>
  <Protocol Name="myscheme"
            NavUriFragment="encodedLaunchUri=%s"
            TaskID="_default" />
</Extensions>

然后我创建了一个名为 AssociationUriMapper.cs 的文件,其中包含

using System;
using System.Windows.Navigation;

namespace PhoneApp3
{
    class AssociationUriMapper : UriMapperBase
    {
        private string tempUri;

        public override Uri MapUri(Uri uri)
        {
            tempUri = System.Net.HttpUtility.UrlDecode(uri.ToString());

            //URI association for my scheme
            if (tempUri.Contains("myscheme:"))
            {
                return new Uri("/MainPage.xaml");
           }

            //else return
            return uri;
        }
    }
}

然后在 App.xaml.cs 中,我在“rootframe.navigated”之后添加了这一行

// Assign the URI mapper to the frame
RootFrame.UriMapper = new AssociationUriMapper();

现在根据我对我从 msdn 中包含的链接的理解,如果我在 Windows Phone 模拟器中访问 Internet Explorer 并输入类似“myscheme://something”之类的内容,它应该会自动启动我的应用程序(即使应用程序什么都不做,前提是我现在无法真正使用该 url,我只是希望它打开我的应用程序)

我现在真的不知道该怎么做,我发现了一些其他教程解释了完全相同的事情,所以我不明白为什么我的代码不起作用......

(顺便说一句,如果我犯了语法或拼写错误,抱歉,英语不是我的母语)

【问题讨论】:

    标签: c# windows-phone-8 uri url-scheme custom-url


    【解决方案1】:

    你可以看看this tutorial。

    这里引用一段话:

    什么会触发您的 URI 关联并启动您的应用:获取 来自 NFC 标签的 URI。通过邮件获取 URI。单击 HTML 链接 包含 URI。使用自定义协议进行网页重定向。得到 来自 NFC 设备的 URI 共享一个 URI。

    还有一个:

    什么不会触发您的 URI 关联并启动您的应用程序:输入 直接在 Web 浏览器中的 URI。扫描 Bing 搜索中的二维码。

    因此,在浏览器中输入 URI 不起作用。要测试您的应用在从其他应用启动时的行为方式,您可以下载 Shortcuts,创建自定义 URI 的快捷方式,然后在此处输入您要测试的 URI。

    免责声明:我在 Enless Soft 工作,Shortcuts 是我们的应用之一。

    【讨论】:

    • 谢谢,这就是问题所在!我刚刚将 url 编辑为 html 页面中的链接,当我点击它时,它会启动我的应用程序!
    【解决方案2】:

    所以我将 MSDN 文章 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206987(v=vs.105).aspx 中描述的代码添加到 Windows Phone 7.1 应用程序

    我的步骤与 Florian.C 描述的相同。 现在的问题是,如果我添加:

    <Extensions>
        <Protocol Name="myApp" NavUriFragment="encodedLaunchUri=%s" TaskID="_default" />
    </Extensions>
    

    我从 VS 收到一个错误,报告“协议”不能是扩展的子扩展,它期待子扩展。 是否可以在 OS 7.1 上运行该方案?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      相关资源
      最近更新 更多