2013-07-30 38 views
1

我们有一个android网站,可以在webview(即从应用程序)中打开,也可以在网络浏览器中打开。如何从浏览器视图区分android web视图?

在这两种情况下,我们必须显示不同的行为。有什么方法可以区分请求是来自应用程序webview(内部在本地浏览器上打开应用程序)还是直接浏览器请求。

我们不能依赖用户代理,因为我们无法更新客户端。

我想要做这样的事情:

if(webview) 
{} 
else if(browser) 
{} 

它是一个高优先级的问题,所以有任何线索,有人解决这个问题,请尽快发布!

回答

1

设置用户代理字符串在网页视图,并把它在你的代码

yourWebView.getSettings().setUserAgentString("Some user agent String to identify"); 

this回答解释了如何做到这一点。

+0

Arun,谢谢你的回复!但是我们无法修改用户代理,因为许多客户正在使用该应用程序,他们自行配置APK。我们只能在我们的网站上进行更改,即仅从JavaScript中检查。有没有什么办法可以在页面上找到它是在浏览器还是在webview中打开? – arvindsc

+0

Android为其webview和默认的Android浏览器使用相同的引擎。所以你的脚本应该在webview和默认的android浏览器中以相同的方式工作。如果你想要不同的行为,你可以考虑在url中添加一些默认参数。不过android重启使用setUserAgentString! –

1
if(window._cordovaNative) { 
    // its a web view 
} else { 
// its a web browser 
} 
0

所有通过webview发送的http请求都有以下标题。你可以用它来检测你从哪里得到请求

X-Requested-With: the.app.packageName