WebViewに独自ヘッダーを埋め込む


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

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください