2014-09-11 42 views
0

我想提交一個表單,我在我的webview中加載的遠程url。每當我提交它,php腳本讀取它並運行它,但是當它發回請求時,它會發送一個url,然後提示我使用瀏覽器查看它。在android webview捕獲提交表單的返回url

有沒有辦法讓android捕獲該網址,以便它不會在Web瀏覽器上運行,而是在我的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個不同的命令?

回答

1

只需添加一個新的WebViewClient並覆蓋shouldOverrideUrlLoading方法。這將被用於所有的URL你撥打:

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); 
     } 
    }); 
0

您可以使用<data>元素作爲意圖過濾器的一部分,概述here

因此,例如:

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

我認爲動作是<action android:name="android.intent.action.VIEW" />,但我不是100%肯定。

1

webview.setWebViewClient(新WebViewClient(){ 公共布爾shouldOverrideUrlLoading(web視圖視圖,字符串URL){

} 

});