我正在尝试为Android中的GeckoView实现一个noddy Web扩展,以仅在网页上执行一些javascript,相当于在普通Android WebView上执行webView.evaluateJavascript(),但是我在寻找任何有用的示例时遇到了麻烦或在线教程。
我以前曾经尝试过WebView,但是我试图在登录期间访问错误的网站意味着我无法访问它。但是,该登录可以使用GeckoView
到目前为止,我一直在关注这些内容:
https://sammacbeth.eu/blog/2019/09/04/geckoview-extensions.html
https://mozilla.github.io/geckoview/consumer/docs/web-extensions
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension
但是,它们似乎有些过时,甚至是mozilla自己的文档,因为我使用的API不再遵循示例。
我正在使用GeckoView的稳定版本:73.0.20200217142647
根据以上[3],我的文件结构是:
java
|
+-- assets
| |
| +--checkExtension
| |
| manifest.json
| checkExtension.js
|
+-- res
|
+-- src
manifest.json的内容是
{
"manifest_version": 2,
"name": "checkExtension",
"version": "1.0",
"description": "Automatically clicks the authorise button to continue the photo upload.",
"content_scripts": [
{
"matches": ["*"],
"js": ["checkExtension.js"]
}
],
"permissions": [
"nativeMessaging",
"geckoViewAddons"
]
}
'matches'设置为'*',因此它应该与导航到的所有页面都匹配
checkExtension.js仅包含:
alert('hello')
我的GeckoView活动是:
GeckoView view = findViewById(R.id.geckoview);
GeckoSession session = new GeckoSession();
GeckoRuntime runtime = GeckoRuntime.create(this);
session.open(runtime);
WebExtension test = new WebExtension(
"resource://assets/extension/checkExtension/",
runtime.getWebExtensionController());
runtime.registerWebExtension(test);
view.setSession(session);
session.loadUri("https://www.google.com");
但是,页面加载时没有警报显示。除了尝试显示警报框外,我还尝试了一些针对特定站点的脚本,但是它们都不起作用。
是否有明显的缺失或任何资源可以帮助我?
非常感谢。
但是,页面加载时未显示任何警报