Я пытаюсь написать приложение, которое должно запускаться автоматически, когда пользователь нажимает ссылку на определенный 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, если я перейду в Internet Explorer в симуляторе Windows Phone и наберу что-нибудь вроде "myscheme://something", он должен автоматически запустить мое приложение (даже если приложение ничего не делает при условии, что мне пока не удается действительно использовать URL-адрес, я просто хочу, чтобы он открыл мое приложение)
Я действительно не сейчас, что делать, я нашел несколько других учебников, которые объясняют то же самое, поэтому я не понимаю, почему мой код не работает...
(Кстати, извините, если я сделал грамматику или орфографические ошибки, английский не мой родной язык)
Вы можете взглянуть на этот учебник.
Вот цитата из нее:
Что вызовет вашу ассоциацию URI и запустит ваше приложение: Получить URI из тега NFC. Получите URI по почте. Нажмите ссылку HTML, содержащую URI. Переадресация веб-страницы с помощью настраиваемого протокола. Получить URI с устройства NFC, используя URI.
И еще один:
Что НЕ запускает вашу ассоциацию URI и запускает ваше приложение: введите непосредственно URI в веб-браузере. Сканирование QR-кода из поиска Bing.
Таким образом, ввод URI в браузере НЕ работает. Для того, чтобы проверить, как приложение ведет себя при запуске из другого приложения, вы можете загрузить ярлыки, сделать ярлык для пользовательского URI и введите URI, который вы хотите проверить там.
Отказ от ответственности: я работаю в Enless Soft и Shortcuts - это одно из наших приложений.
Поэтому я добавил код, как описано в статье 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, сообщая, что "Протокол" не может быть дочерним элементом Extensions, он ожидает дочернего расширения. Можно ли запустить схему для ОС 7.1?