【发布时间】:2021-06-04 23:21:47
【问题描述】:
不幸的是,我使用的平台无法使用 WebView,因此我无法利用 JavascriptInterface 的简单性从我的网页与我的应用程序进行交互。
是否有完整的(直截了当的)示例说明如何使用 Geckoview 与我的 Android 应用程序交互页面?
我尝试了此页面(和其他)上的步骤:
https://firefox-source-docs.mozilla.org/mobile/android/geckoview/consumer/web-extensions.html
坦率地说,我从来没有见过隐藏这么多细节的页面。
Html 页面就这么简单,托管(比如说)在“http://example.com/x.html”中:
<html>
<script>
function appToPage(s)
{
log('received:' + s);
}
function pageToApp(s)
{
// do something to send s to app
log('sent:' + s);
}
function log(s)
{
var x = document.getElementById('x');
x.innerHTML += '<br>' + s;
}
var i = 0;
</script>
<body>
<input type=button onclick="pageToApp('helloFromPage' + (i++))" value="SEND">
<div id="x"></div>
</body>
</html>
<script>
log('started');
</script>
安卓端:
public class MainActivity extends AppCompatActivity
{
protected void onCreate(Bundle savedInstanceState)
{
...
//all the stuff needed for GeckoView and extensions
geckoSession.loadUri("http://example.com/x.html");
...
}
// when some user press some button in the browser
public void onSendButtonClick()
{
// do somenthing to call appToPage("helloFromApp");
}
// this should be called when a message arrives
public void onMessageFromPage(String s) // or whatever object as parameter (JSON, for example)
{
Log.d("msgFromPage", s)
}
...
}
【问题讨论】:
标签: firefox-addon-webextensions geckoview