Crosswalk:XWalkUIClient.onCreateWindowRequested():如何获取所请求的URL?

时间:2016-05-24 21:14:18

标签: android crosswalk

我想在某些javascript代码执行时打开Android中的默认浏览器' window.open()'在人行横道网页视图中。

我创建了一个扩展XWalkUIClient并覆盖onCreateWindowRequested()的类。调用window.open()时调用此方法,这是所需的行为。但是,我不知道如何获取调用window.open()的url参数。有谁知道如何获取网址?

收到网址后,我想使用以下代码打开此网址:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));

1 个答案:

答案 0 :(得分:1)

您无法直接访问该网址,但在XWalkView中使用临时XWalkUIClient和自定义onCreateWindowRequested,您可以实现您所追求的目标。

以下代码示例显示了如何访问onCreateWindowRequested中的网址:

xWalkView.setUIClient(new XWalkUIClient(xWalkView) {
    @Override
    public boolean onCreateWindowRequested(XWalkView view, InitiateBy initiator, final ValueCallback<XWalkView> callback) {
        // Create a temporary XWalkView instance and set a custom XWalkUIClient
        // to it with the setUIClient method. The url is passed as a parameter to the
        // XWalkUIClient.onPageLoadStarted method.
        XWalkView tempView = new XWalkView(getActivity());
        tempView.setUIClient(new XWalkUIClient(tempView) {
            @Override
            public void onPageLoadStarted(XWalkView view, String url) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);
            }
        });

        // Return the temporary XWalkView instance with the callback to start the page
        // load process in tempView.
        callback.onReceiveValue(tempView);
        return true;
    }
});