嵌入式webview显示非活动InputConnection消息后的位置栏

时间:2014-10-09 12:47:52

标签: android webview

我正在开发一个简单的应用程序,只有嵌入式chrome webview与嵌入式http服务器通信。项目中几乎没有Android java代码。 Web应用程序运行良好约5分钟,webview全屏,javascript执行各种dom操作。 webview没有典型的浏览器装饰,只显示内容区域。

之后5分钟,我在logcat中看到一条消息:W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection,然后嵌入式chrome webview突然显示为浏览器。它有一个位置栏,搜索,收藏等...

现在我意识到普通浏览器的启动方式与我的webview具有相同的URL,因此它显示的是与我的webview相同的海报。但为什么?我的应用程序没有启动任何内容!

这搞砸了我的整个应用程序,它使用android +浏览器组合来显示海报信息,我想摆脱这种行为。

我的应用没有或不需要任何输入,但它需要连续运行,通常在连接到大型显示器的Android设备上运行。

有人会有任何关于解决这个问题的信息吗?

我的代码中涉及设置webview的部分是微不足道的:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);
    setContentView(R.layout.activity_main);
    WebView webView = (WebView) findViewById(webView1);
    WebSettings settings = webView.getSettings();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
    {
        WebView.setWebContentsDebuggingEnabled(true);
    }
    settings.setJavaScriptEnabled(true);

之后我设置了内部Web服务器,最后:

    String index_html = String.format(Locale.US, "http://localhost:%d/test/index.html", port);
    webView.loadUrl(index_html);
}

1 个答案:

答案 0 :(得分:0)

  

然后嵌入式chrome webview突然显示为浏览器

如果用户点击传统超链接,或者服务器发出重定向,则会发生这种情况。 WebView的默认行为是在用户的浏览器中加载目标网址(更准确地说:它使用ACTION_VIEW启动某些内容来查看该网址。)

您可以在setWebViewClient()上致电WebView,提供您自己的WebViewClient子类,在其中实施shouldOverrideUrlLoading()并自行处理该事件,例如通过调用{{1}在loadUrl()上保留您的应用内的网址。

相关问题