Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing Headers while using Browser Intent

I want to pass some headers while opening a web page. Right now, I'm doing something like : browserIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(data.link)); startActivity(browserIntent);

Now I'm stuck as I dont know how to pass headers using browserIntent. I've tried using browserIntent.putExtra() but it doesn't work.

Can anyone please help.!!

like image 582
Saurabh Verma Avatar asked Sep 20 '10 10:09

Saurabh Verma


2 Answers

This was my biggest question in the last 2days, too! And I found it!!!

I have a Map object that I stored header information. Then the following:

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
Bundle bundle = new Bundle();
if(mExtraHeader!=null){
 for(String key: mExtraHeader.keySet()){
  bundle.putString(key, mExtraHeader.get(key));
 }
}
i.putExtra(Browser.EXTRA_HEADERS, bundle);
startActivity(i);

One problem is...I guess this would only work with the default browser and other browsers wouldn't have Browser.EXTRA_HEADERS I suppose. Resource: http://gitorious.org/rowboat/packages-apps-browser/blobs/a563d09392905140893d7a017dd63721577e1953/src/com/android/browser/BrowserActivity.java

like image 199
st_bk Avatar answered Oct 24 '22 03:10

st_bk


As Satoshi guessed, this doesn't work with Chrome. If you need to pass headers, you'll need to create your own WebView and load the url with a map of headers. Assume that mWebView is a reference to your webview.

Map<String, String> headers = new HashMap<>();
headers.put("referer", "http://some-referer");
mWebView.loadUrl(mUrl, headers);
like image 42
loeschg Avatar answered Oct 24 '22 04:10

loeschg