#javascript #c# #android #asp.net-mvc
#javascript #c# #Android #asp.net-mvc
Вопрос:
В моем приложении есть ссылка, при нажатии на которую генерируется файл событий календаря ics, который возвращается с контроллера как ActionResult / File:
return File(memoryStream, "text/calendar", "calendar.ics");
ссылка выглядит следующим образом:
<a href="/controllerName/MethodName?param=xyz">link</a>
Ожидаемый результат: нажмите на ссылку, откроется браузер с загруженным файлом. При возврате в приложение остается на том же экране в приложении.
Это работает, как ожидалось, в приложении IOS, браузерах на iOS и Android, но не в приложении Android. В приложении для Android нажмите на ссылку, браузер открывается с загруженным файлом, но при возврате в приложение отображается пустая страница, мне нужно дважды нажать кнопку «Назад», чтобы перейти на старую страницу. Не уверен, почему? Похоже, что это создает некоторую навигацию из-за href?
Чтобы предотвратить переход на пустую страницу в приложении, я изменил <a>
на <div>
и href=""
на ng-click=syncCalendar()
и использую $http.post()
для получения ответа от того же контроллера, который возвращает файл выше. Ответ, который я получаю, — это содержимое файла, когда я регистрирую его на консоли, он имеет правильное содержимое, отображаемое простым текстом в консоли. И приложение больше не переходит на пустую страницу. Это содержимое response
:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ddaysoftware.com//NONSGML DDay.iCal 1.0//EN
BEGIN:VEVENT
DESCRIPTION:...............
DTEND:20161022T110000
DTSTAMP:20161020T145537Z
DTSTART:20161022T104500
LOCATION:123 Test DrivenNY, NY 123456
SEQUENCE:0
SUMMARY:xyz
UID:123-56h-78di-9dfgh
END:VEVENT
END:VCALENDAR
Затем я открываю файл из javascript в моем приложении с:
window.open("data:text/calendar;charset=utf8," escape(response));
Это также работает в обоих браузерах iOS и Android. Но не работает при тестировании в приложении для Android. Браузер открывается не так, как ожидалось. Не уверен, в чем проблема, почему это не работает только в приложении для Android?
Ответ №1:
Оказывается, это глупая строка кода в моем родном приложении для Android…. У меня было это:
webView.loadUrl("about:blank");
уххх, я всегда думал, что это проблема на стороне сервера, не смотрел на родную сторону. Итак, в тот момент, когда я удаляю этот код, он ведет себя хорошо.