在浏览器中打开下载的ics文件'返回后,App出现黑屏
本文关键字:返回 App 浏览器 下载 文件 ics | 更新日期: 2023-09-27 18:14:02
在我的应用程序中有一个链接,当点击时,生成一个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 Drive'nNY', 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原生应用....中一个愚蠢的代码行我有这个:
webView.loadUrl("about:blank");
嗯,我一直认为这是一个服务器端问题,没有考虑到本地端。因此,当我删除这段代码时,它就会正常运行。