网站所有者如何知道我正在使用安卓应用程序访问他的页面?



我想创建一个安卓应用程序。当我单击ListView中的一行时,它应该转到一个网站。

ListView中,我将拥有我的小部件,例如TextViewImageView等...例如:"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 作为浏览器,则可以在"网络"下的开发者工具窗口中查看标题

相关内容

最新更新