我正在开发一个简单的应用程序,只有嵌入式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);
}
答案 0 :(得分:0)
然后嵌入式chrome webview突然显示为浏览器
如果用户点击传统超链接,或者服务器发出重定向,则会发生这种情况。 WebView
的默认行为是在用户的浏览器中加载目标网址(更准确地说:它使用ACTION_VIEW
启动某些内容来查看该网址。)
您可以在setWebViewClient()
上致电WebView
,提供您自己的WebViewClient
子类,在其中实施shouldOverrideUrlLoading()
并自行处理该事件,例如通过调用{{1}在loadUrl()
上保留您的应用内的网址。