ポストで通信したかっただけなのに....
Androidさんがいぢめる!
posturlを使ってwebviewの表示を切り替えていると、リダイレクトの時に別ブラウザを立ち上げようとする
どうしてそういう挙動になるのかよくわからないのですが、
解決手段としてWebViewのクライアントを俺クライアントにして、
shouldOverrideUrlLoadingメソッドの部分で即returnを返してあげるようにすると
webView内で完結するようになった。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
String url = "http://www.google.co.jp/";
webView = (WebView) findViewById(R.id.webView);
//クライアント上書き。
webView.setWebViewClient(new ViewClient(webView));
//ユーザーエージェント設定
String userAgent = webView.getSettings().getUserAgentString();
webView.getSettings().setUserAgentString(userAgent + "fc.app.native Android Mobile AppleWebKit Device");
//ポストしたデータを送信
String data = "num=1234";
webView.postUrl(url, data.getBytes());
}
//WebViewClientを継承
public class ViewClient extends WebViewClient {
public ViewClient (WebView view){
}
//もし画面がWebView内でリンクがTapされてロードが始まったら割り込んでブラウザを立ち上げる
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
}
どうしてこうなるんだろう。
この不思議な現象のせいで「postUrlは外部ブラウザを立ち上げるメソッド何じゃないか」と錯覚しそうになりました。
詳しい人おしえて下さいm(_ _)m
ちなみにiosでポストする時はこんな感じ。
NSString url = @"http://www.google.co.jp/"
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url];
// POST指定
req.HTTPMethod = @"POST";
// BODYに登録、設定
NSString *body = [NSString stringWithFormat:@"num=1234"];
req.HTTPBody = [body dataUsingEncoding:NSUTF8StringEncoding];
// リクエスト送信
[_webView loadRequest:req];