【问题标题】:Messages between HtmlPage and AndroidApp using GeckoView使用 GeckoView 的 HtmlPage 和 AndroidApp 之间的消息
【发布时间】: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


    【解决方案1】:

    我也在使用一个月前的 Geckoview。要与您的网站内容交互,您必须使用网络扩展。 有两种方法:

    1. 消息传递
    2. 端口消息传递

    我正在分享一个示例链接:https://searchfox.org/mozilla-central/source/mobile/android/examples

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-20
      • 2017-10-21
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      • 2011-01-10
      • 2017-05-02
      相关资源
      最近更新 更多