我想创建一个安卓应用程序。当我单击ListView
中的一行时,它应该转到一个网站。
在ListView
中,我将拥有我的小部件,例如TextView
,ImageView
等...例如:"www.amazon.com"
我尝试了以下方法,
rowView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.EMPTY.parse("www.amazon.com"));
context.startActivity(i);
}
});
它成功重定向到"www.amazon.com"。
在这里,亚马逊人如何知道人们正在使用我的应用程序访问他们的网站?
当您单击链接时,浏览器会加载您单击的网页并告诉网站您来自哪里。例如,如果您在 stackoverflow.com 上单击了指向外部网站的链接,则外部网站将看到您来自 stackoverflow.com 问题的地址。此信息包含在 HTTP 引用标头中。
若要添加此信息,可以使用以下代码,假设您使用 WebView 显示网站
String url = "http://www.amazon.com/";
Map<String, String> extraHeaders = new HashMap<String, String>();
extraHeaders.put("Referer", "http://www.yourwebsite.com");
WebView wv;
wv = (WebView) findViewById(R.id.webview);
wv.loadUrl(url, extraHeaders);
使用Intent是不可能的,除非用户将使用支持此类代码的默认浏览器
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
Bundle bundle = new Bundle();
bundle.putString("Referer", "http://www.yourwebsite.com");
browserIntent.putExtra(Browser.EXTRA_HEADERS, bundle);
但是,如果您只是在布局中具有WebView
,并且具有可见性invisible
,并且您不覆盖WebClient
,即wv.setWebViewClient(new MyWebViewClient());
,您将获得与Intent
相同的行为
我从未使用过安卓应用程序,所以我不知道确切的实现。但是您可以做的是手动设置Web请求的标头,以便看起来像桌面浏览器。如果您使用 chrome 作为浏览器,则可以在"网络"下的开发者工具窗口中查看标题