приложение переходит на пустой экран при возвращении из «открыть загруженный файл ics в браузере»

#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");
  

уххх, я всегда думал, что это проблема на стороне сервера, не смотрел на родную сторону. Итак, в тот момент, когда я удаляю этот код, он ведет себя хорошо.