控制Android WebView类

时间:2015-06-09 02:38:07

标签: android webview android-webview

我使用WebView类在我的apk中显示教程。我喜欢它,因为我可以管理和更新教程而无需在apk中进行任何更改。我将所有教程html文件保存在我们网站上的特定文件夹中。

我的问题是,有任何事件可以让我捕捉开始导航(当用户点击链接时)。我想看看用户在我的教程中点击了什么链接,只要用户在我们网站上的教程文件夹中导航,他就应该在我的apk的WebView中导航。但是,如果有任何链接指向教程文件夹之外,则应阻止导航到此链接,并将导航传递给浏览器。

我不确定我是否清楚地解释了它。我是Android开发的新手。请参阅下面的我在C#for Windows phone中的代码示例,我需要在Android apk中使用相同的

    /// <summary>
    /// navigation in the application's browser goes as long as it is in the "stockscreenerapp" folder
    /// if user goes out of this folder ("stockscreenerapp" cannot be found in the URL string) then
    /// external default browser is called for further navigation
    /// </summary>
    private async void webBrowser1_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)        {
        if (null != args.Uri) {
            string url = args.Uri.ToString();
            int i = url.IndexOf("stockscreenerapp"); /* check whether "stockscreenerapp" is in the URL address */
            if (i == -1) { args.Cancel = true; await Windows.System.Launcher.LaunchUriAsync(args.Uri); /*if it is not we call external browser and pass URL to it*/}
            else { imgLoading.Visibility = Visibility.Visible; /* show loading image while page is loading */  }
            }
    }

1 个答案:

答案 0 :(得分:1)

尝试使用WebViewClient并监听onPageStarted。这样,您就可以获取所点击链接的网址,检查它是否在您的教程之外,并告诉WebView stopLoading是否为。

在代码中,它可能看起来像这样(警告,未经测试):

WebView webView = new WebView(context);
webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageStarted (WebView view, String url, Bitmap favicon) {
       if(Tutorial.doesNotContain(url))
           view.stopLoading();
           view.goBack();
    }
});