Мой веб-сайт (используйте laravel) вызовите метод window.open в этом коде
window.open('My_URL','_blank');
и мой Android Webview открывают новое окно в диалоговом окне. код
override fun onCreateWindow(view:WebView, isDialog:Boolean,
isUserGesture:Boolean, resultMsg:Message):Boolean {
// set dialog webview
val dialog = Dialog(context)
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
dialog.setContentView(R.layout.activity_webview)
val newWebView = dialog.findViewById<WebView>(R.id.WebView)
newWebView.settings.javaScriptEnabled = true
newWebView.loadUrl(view?.url)
// open dialog full screen
val window = dialog.window
val wlp : WindowManager.LayoutParams = window.attributes
wlp.gravity = Gravity.CENTER
wlp.flags = WindowManager.LayoutParams.FLAG_BLUR_BEHIND
window.attributes = wlp
dialog.window.setLayout(WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT)
dialog.show()
(resultMsg.obj as WebView.WebViewTransport).setWebView(newWebView)
resultMsg.sendToTarget()
newWebView.setWebViewClient(object: WebViewClient() {
})
newWebView.setWebChromeClient(object:WebChromeClient() {
override fun onCloseWindow(window:WebView) {
dialog.dismiss()
window.destroy()
newWebView.destroy()
//webview.removeView(newWebView)
}
})
return true
}
это была успешная работа только один раз.
что я должен делать?
Не уверен, поможет ли это вам или нет, но, насколько я знаю, приложение для Android должно обеспечивать обработку запросов открытия и закрытия окон от javascript. Я имею в виду, что он работает из коробки, но очень часто не так, как ожидается / необходимо.
Можно показать отдельный веб-window как диалог, но, как я знаю, диалоги не могут складываться и появляться друг над другом. Такой подход подходит для случая, когда нужно открыть (а потом закрыть) только один отдельный window. Пожалуйста, прочтите больше о диалогах здесь.
Я предлагаю показывать отдельный WebView на каждый запрос window.open(). Пожалуйста, взгляните на этот отвечать, где было решено аналогичное решение. В вашем случае (где возможно любое количество открытых окон) вы можете использовать LinkedList из WebView, нажимая новый на window.open() и выскакивая верхние на window.close.