Как открыть запрос в браузере по умолчанию для onCreateWindow в Android? - PullRequest
1 голос
/ 09 июля 2019

Я работаю на Android / Kotlin WebView. Я установил,

 webView.webViewClient = MyWebViewClient(mContext)
 webView.webChromeClient = MyWebViewChromeClient(mContext)

val settings = webView.settings
    settings.userAgentString = "App Agent"
    settings.javaScriptCanOpenWindowsAutomatically = true
    settings.setSupportMultipleWindows(true)

Теперь, когда новый веб-запрос поступает из веб-приложения, в настоящее время он открывает новое окно с приложениями webView, как,

class MyWebViewChromeClient(private val mContext: BaseActivity): WebChromeClient() {

    override fun onCreateWindow(view: WebView?, isDialog: Boolean, isUserGesture: Boolean, resultMsg: Message?): Boolean {

        val window = WebView(mContext)
        // set settings
        val parent: RelativeLayout? = mContext.findViewById<RelativeLayout>(R.id.mainLayout)
        parent?.removeAllViews()
        parent?.addView(window)

        val transport = resultMsg?.obj as WebView.WebViewTransport
        transport.webView = window
        resultMsg.sendToTarget()

        return true
    }
}

Итак, как я могу открыть запрос нового окна в браузере Android по умолчанию?

1 Ответ

1 голос
/ 09 июля 2019

внутри метода onCreateWindow получить URL-адрес ссылки из кода ниже:

Рабочий раствор

override fun onCreateWindow(view: WebView?, isDialog: Boolean, isUserGesture: Boolean, resultMsg: Message?): Boolean {
    mContext.runOnUiThread {
        try {
            // here `url` parameter is the caller url
            mContext.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(view.url))))
        }catch (e: Exception){
            EmrLogger.e(classTag, e)
        }
    }

    return true
}

mContext - это контекст, в котором создается webView.

EDIT

WebView newWebView = new WebView(getContext());
newWebView.setWebViewClient(new WebViewClient(){
    @Override
    public void onPageStarted(WebView view, String url,
            Bitmap favicon) {
         // Here param `url` is the target url
        super.onPageStarted(view, url, favicon);
    }
});
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...