我是一名 android 开发人员,我最近知道GeckoView。我可以通过 android WebView (java code) 获取网页的源代码。
但是对于我的新网站,android Webview 无法加载网页,但 GeckoView 可以。现在我想通过 GeckoView 获取网页的源代码。有没有人知道解决这个问题的方法?
预先感谢
执行此操作的一种选择可以遵循以下步骤:
所以...
(1-2)如您所知, geckoview没有那种方便的shouldOverrideUrlLoading()
方法,因此您必须处理NavigationDelegate
具有onLocationChange()
字符串转换为名为“geckoViewUrl”的共享首选项字符串:
sharedprefs.edit().putString("geckoViewUrl", url).apply();
之前进行了所有设置(sharedprefs 等)。检测到加载的页面并将 url 保存到 sharedpref 中,让我们进入最后一步 3。
(3)为了我的使用,只希望允许用户查看(和复制)源,为了最小努力的法则,我使用了另一个带有普通和旧 webview 的活动来显示它。这很容易实现并且不会给用户带来混淆。他/她想看代码,我在另一个活动中展示它。完成后,他/她关闭新活动,生活继续。
那么,用户想要来源?使用 webview 加载另一个活动并使其加载保存的 sharedpref 字符串:
addr2open = pref_out.getString("geckoViewUrl", "");
这样做(例如),您会得到 url 用户想要查看分配给字符串 var 的源。最后,您所要做的就是让 webview 加载这个前面有珍贵单词 的字符串view-source:
,这样:
webView.loadUrl("view-source:" + addr2open);
而已。当然,您可以实现一个依赖于相同活动的解决方案,或者使用 geckoView,显示多个选项、菜单等。我只想向您展示一种以“n”简单的方式解决您的问题的方法。您询问“如何使用 GeckoView 获取网页源代码”。这是答案。完美运行。如果这对您有好处,请接受此作为正确答案。谢谢你。快乐编码。
据我所知,您不能使用 GeckoView 来获取源代码,但 geckoview 库确实有GeckoWebExecutor。看一下 fetch 方法和它返回的WebResponse 。
通过将WebResponse.body
InputStream 转换为字符串,您可以获得源代码。