Android 在应用程序中嵌入 firefox 浏览器

Posted

技术标签:

【中文标题】Android 在应用程序中嵌入 firefox 浏览器【英文标题】:Android embed firefox browser in application 【发布时间】:2012-02-07 07:07:02 【问题描述】:

这有点像在黑暗中拍摄,但是...我知道我们已经暴露了WebView。我想知道我们是否可以在 android 应用中使用/嵌入 firefox 的渲染器?

我有一个.mht 文件,它在安卓默认浏览器、dolphin 或opera 中都不起作用。但神秘地在 Firefox 移动版中运行。

有什么办法可以做到吗?

【问题讨论】:

最好将 .mht 转换为更流行的格式,例如 .html 相信这个答案 [在 android 中,如何强制使用特定浏览器打开 URI,而不弹出“选择浏览器”列表?][1] [1]:***.com/questions/6788395/…跨度> 试试这个答案 [在 android 中,如何使用特定浏览器强制打开 URI,而不弹出“选择浏览器”列表?][1] [1]:***.com/questions/6788395/…跨度> 【参考方案1】:

所以,移动版 Firefox 的"features"-site 为:

移动版 Firefox 与桌面版基于相同的浏览器引擎构建 版本,但针对在移动设备上的浏览进行了优化。

由于桌面版 Firefox 使用 Mozilla 自己的Gecko-engine 进行渲染,所以就是这样。

docs 介绍了如何将 Gecko 引擎嵌入到您的项目中(还有一个较早的问题:How can I embed firefox in a GUI application?),但它们的目标是在桌面应用程序中使用(通常有更多资源可供使用)而不是可用作 Java 库/绑定。

由于 Mozilla 是一家开源公司,Mobile Firefox 的源代码是公开的,构建说明可以在 here 找到。尽管您可以尝试一下,看看是否可以仅隔离渲染引擎部分以在您的应用程序中使用它。

另一种选择是将所有这些文件(捆绑在您的.mht-文件中)放在/res/raw-文件夹中,并与普通的WebView 一起使用。

【讨论】:

是的,我实际上已经将 .mht 反编译为它的资产。主要问题是这个 Web 应用程序使用 XMLHttpRequest 对象来加载本地资源,并且所有浏览器都会阻止它——即使原始脚本是本地的。 Firefox 和 IE 似乎是唯一允许在本地执行此操作的主要浏览器。 IE 在 Android 上是不可能的,所以我想到了 Firefox Mobile。如果客户端允许我编辑 webapp 并包含 ajax 加载的资源,那就太好了;但对于这个解决方案,我需要按原样运行 webapp。 为什么需要用 AJAX 加载本地资源? (不可编辑的).mht webapp 使用 ajax 加载一些资源,一旦转换为 mht,即使解压后,一切都变成本地的。

以上是关于Android 在应用程序中嵌入 firefox 浏览器的主要内容,如果未能解决你的问题,请参考以下文章

在 WPF/C# 中嵌入 Firefox/Gecko

嵌入式闪存在 Chrome 中工作而不是在 FireFox 中

仅使用 Firefox Addon SDK 在后台嵌入 NPAPI 插件

在 IE/Chrome 中动态更改嵌入式视频 src(适用于 Firefox)

当鼠标悬停在 Firefox 中的嵌入式 iframe 上时,防止父页面滚动

.htaccess规则允许在Firefox中跨站点嵌入字体共享