최소 코드는 다음과 같습니다.
사용 사례는 다음과 같이이다 :Android WebView shouldOverrideUrlLoading, super 메소드를 호출하거나 false를 반환해야합니까?
하면 1 페이지, 다음 방법에서 POST 데이터를 얻을 postUrl로 보낼 수 있습니다.
페이지 2 인 경우 URL을 ACTION_VIEW 활동에 보내고 android가 처리하도록하십시오.
3 페이지가 궁금합니다.이 경우 웹보기에서 URL을 열어주세요.
인사이드 페이지 3 HTML 폼이 있습니다. 따라서 loadUrl
으로로드하면 POST 데이터가 손실됩니다. 또한 POST 데이터가 HTML 페이지 안에 있기 때문에 postUrl
으로로드 할 수 없으며 폼의 POST 데이터를 얻기 위해 자바 스크립트 해킹을하고 싶지 않습니다. 그래서 WebView에서 3 페이지를 열었 으면합니다. 그것을 위해 무엇을해야합니까?
super.shouldOverrideUrlLoading(view, url)
또는 return false
으로 전화해야합니까?
Documentation은 분명하지 않습니다. return false
을 super.shouldOverrideUrlLoading
없이 호출하면 안드로이드가 webview 외부에서 URL을 처리하도록합니까?
public class myWebViewClient extends WebViewClient {
...
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("http://example.com/page1")) {
String postData = getPOSTdata();
view.postUrl(url, EncodingUtils.getBytes(postData, "BASE64"));
return true;
}
if (url.startsWith("http://example.com/page2")) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
if (url.startsWith("http://example.com/page3")) {
//super.shouldOverrideUrlLoading(view, url);
//return false;
}
}
}