WebViewで、独自の情報をヘッダーに埋め込みます。
自分の調査不足なのか判りませんが、独自ヘッダーが有効なのは、埋め込んだ直後1ページのみで、そこから別のページに遷移するとヘッダー情報は失われました。
ヘッダー情報を保持し続ける方法をご存知の方がいらっしゃいましたら、コメントくださいm(__)m
public class WebViewActivity extends Activity { private String DEFAULT_URL = "○○○.html"; private String CHECK_URL = "△△△.html"; private JSONObject kv; //ヘッダー private Map<String, String> extraHeaders; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_webview); CheckHeader(); // WebViewインスタンスを取得 WebView webView = (WebView) findViewById(R.id.webView); //ヘッダーに埋め込む extraHeaders = new HashMap<String, String>(); extraHeaders.put("KeyName", kv.toString()); //WebViewの設定 webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true); webView.setVerticalScrollbarOverlay(true); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(url); // WebViewClientを継承 webView.setWebViewClient(new WebViewClient() { // リンクをタップしたときに標準ブラウザを起動させない。 @Override public boolean shouldOverrideUrlLoading(WebView webView, String url) { if (url.startsWith("http:") || url.startsWith("https:")) { //インストール状況をチェックするURLのときだけ独自ヘッダーを埋め込む //(独自ヘッダーは最初にアクセスしたURLしか有効でないため? 別のページに遷移すると独自ヘッダー情報が失われている) if (url.equals(CHECK_URL)) { webView.loadUrl(url, extraHeaders); } return false; } // アンドロイドマーケットのときは例外 else { Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); return true; } } }); } //ヘッダーをつくる private void CheckHeader() { //情報をJSON化 kv = new JSONObject(); try { for (int i = 0; i < install.length; i++) { kv.put("key" + i, i); } } catch (JSONException e2) { e2.printStackTrace(); } System.out.println("kv:" + kv.toString()); }
コメントを残す