【问题标题】:Android WebView from Service (without Activity)来自服务的 Android WebView(无活动)
【发布时间】:2014-04-19 17:57:27
【问题描述】:

我尝试通过 服务通知 运行 WebView。 WebView 工作正常,但我没有运行警报和一些 JavaScript 函数。

这就是我创建 WebView 的方式(没什么特别的):

mWebView = new WebView(mServiceContext);
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        webSettings.setBuiltInZoomControls(true);

        mWebView.requestFocusFromTouch();

        mWebView.setWebViewClient(new WebViewClient());
        mWebView.setWebChromeClient(new WebChromeClient());    


        mWebView.setOnClickListener(new OverlayOnClickListener());
        mWebView.setOnTouchListener(new OverlayOnTouchListener());
        mWebView.loadUrl("file:///android_asset/www/test/test.html");

这是 test.html 文件:

<!DOCTYPE html>
<html>
<head>
    <script>
    function myFunction()
    {
        alert("Hello! I am an alert box!");

        console.log("clicked");
    }
    </script>
</head>
<body>

<input type="button" onclick="myFunction()" value="Show alert box" />
</body>
</html>

当我单击 WebView 上的按钮时,我从 JSDialogHelper 收到以下日志消息:

"Cannot create a dialog, the WebView context is not an Activity"

有没有机会解决这个问题?

【问题讨论】:

标签: javascript android webview android-context


【解决方案1】:

有没有机会解决这个问题?

实现一个真正的WebChromeClient,即overrides onJsAlert()。你的setWebViewClient()setWebChromeClient()setOnClickListener()setOnTouchListener()没用,我怀疑setBuiltInZoomControls()requestFocusFromTouch()对你也没有好处。

【讨论】:

  • 我会试试的!感谢您的快速答复!
  • @CommonWare 你能帮我解决我的问题吗?stackoverflow.com/questions/23524211/…
  • 解决了吗?我已经覆盖了 WebChromeClient 并设置了一个新的,通过启动一个以对话框为主题的活动来处理 onJsAlert(),但我仍然收到错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多