在android webview中捕获提交表单的返回URL

时间:2014-09-11 07:53:10

标签: php android forms webview

我正在尝试在我在webview中加载的远程网址中提交表单。每当我提交它时,php脚本会读取并运行它,但是当它发送回请求时它会发送一个url,然后提示我使用浏览器查看它。

有没有办法让Android捕获该网址,以便它不会在网络浏览器上运行,而是在我的Android应用程序上运行它?

我正在创建一个混合应用程序,这就是为什么我不能使用phonegap,因为我将使用一些本机应用程序功能。

这是我目前的语法:

WebView webView = (WebView)findViewById(R.id.webView);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.loadUrl("http://mywebsite.com/");

我的php脚本是否读取表单(它是一个登录表单)然后处理登录和会话变量,然后发回它访问其他网页所需的URL,我还没有使用任何php框架。

我该怎么做才能捕获php脚本发送的Url?我是否需要创建一个条件,以便为web和Android应用程序发送2个不同的命令?

3 个答案:

答案 0 :(得分:1)

webview.setWebViewClient(new WebViewClient(){     public boolean shouldOverrideUrlLoading(WebView view,String url){

}

});

答案 1 :(得分:1)

只需添加一个新的WebViewClient并覆盖shouldOverrideUrlLoading方法。这将调用您调用的所有网址:

   webView.setWebViewClient(new WebViewClient()
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            //do whatever you want with url
            return super.shouldOverrideUrlLoading(view, url);
        }
    });

如果您的请求是重定向,并且它在API级别< 10你可能想要调用onPageStarted。

   webView.setWebViewClient(new WebViewClient()
    {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon)
        {
            //do whatever you want with url
            super.onPageStarted(view, url, favicon);
        }
    });

答案 2 :(得分:0)

您可以使用<data>元素作为概述过滤器的一部分,如here所述

例如:

<intent-filter>
    <data android:scheme="http" android:host="mywebsite.com" />
    ...
</intent-filter>

我认为行动是<action android:name="android.intent.action.VIEW" />,但我不是百分百肯定。