我正在尝试在我在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个不同的命令?
答案 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" />
,但我不是百分百肯定。