本文介绍了PHP中的Android WebView检测的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经完成了一个简单的 Android 应用程序,其中包含本机菜单和包含我的网站内容的 web 视图.我需要检测我的网站是否包含在 webview 中以隐藏菜单栏.
I've done a simple Android App with native menu and a webview with my site content. I need to detect if my website is included in a webview in order to hide the menu bar.
经过长时间的研究,我发现了这种方式:
After a long research I found this way:
if($_SERVER['HTTP_X_REQUESTED_WITH'] == "myAppPackage"){
//the site is included in webview
}
此解决方案适用于许多设备,但对于 Galaxy S4 Mini(Android 4.2.2),此变量为空!
This solution is good for a lot of devices, but for a Galaxy S4 Mini(Android 4.2.2) this variable is blank!
其他 htp 头变量:
Other htp header variables:
- 路径/usr/local/bin:/usr/bin:/bin
- UNIQUE_ID U6LV8AAAEAABFtKXcAAADY
- HTTP_HOST 主机名
- HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
- HTTP_USER_AGENT Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如 Gecko)Chrome/27.0.1453.116Safari/537.36
- HTTP_REFERER http://webx225.aruba.it/CP/index.php
- HTTP_ACCEPT_ENCODING gzip、放气、sdch
- HTTP_ACCEPT_LANGUAGE it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4
- HTTP_COOKIE PHPSESSID=5deb3527097d0f767aba45d0aa042;aopendivids=nada;acgroupswithpersist=nada;wooTracker=lzp5HpPQNDCd;__utma=250126209.968543423.1402584011.1403102882.1403106109.27;__utmc=250126209;__utmz=250126209.1402752662.8.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)
- HTTP_CACHE_CONTROL max-stale=0
- HTTP_CONNECTION 保持连接
- HTTP_X_BLUECOAT_VIA b1ae316f3a2874e7
- SERVER_SIGNATURE 无价值
- SERVER_SOFTWARE Apache/2.2
- SERVER_NAME 主机名
- SERVER_ADDR 62.149.140.235
- SERVER_PORT 80
- REMOTE_ADDR 62.249.32.77
- DOCUMENT_ROOT/web/htdocs/hostname/home/
- SERVER_ADMIN postmaster@hostname
- SCRIPT_FILENAME/web/htdocs/hostname/home/aruba__php__test.php
- REMOTE_PORT 43924
- GATEWAY_INTERFACE CGI/1.1
- SERVER_PROTOCOL HTTP/1.1
- 请求方法获取
- QUERY_STRING 没有价值
- REQUEST_URI/aruba__php__test.php
- SCRIPT_NAME/aruba__php__test.php
- PHPRC 没有价值
- PATH /usr/local/bin:/usr/bin:/bin
- UNIQUE_ID U6LV8AAAEAABFtKXcAAADY
- HTTP_HOST hostname
- HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
- HTTP_USER_AGENT Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116Safari/537.36
- HTTP_REFERER http://webx225.aruba.it/CP/index.php
- HTTP_ACCEPT_ENCODING gzip,deflate,sdch
- HTTP_ACCEPT_LANGUAGE it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4
- HTTP_COOKIE PHPSESSID=5deb3527097d0f767aba45d0aa042; acopendivids=nada; acgroupswithpersist=nada; wooTracker=lzp5HpPQNDCd;__utma=250126209.968543423.1402584011.1403102882.1403106109.27; __utmc=250126209; __utmz=250126209.1402752662.8.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)
- HTTP_CACHE_CONTROL max-stale=0
- HTTP_CONNECTION Keep-Alive
- HTTP_X_BLUECOAT_VIA b1ae316f3a2874e7
- SERVER_SIGNATURE no value
- SERVER_SOFTWARE Apache/2.2
- SERVER_NAME hostname
- SERVER_ADDR 62.149.140.235
- SERVER_PORT 80
- REMOTE_ADDR 62.249.32.77
- DOCUMENT_ROOT /web/htdocs/hostname/home/
- SERVER_ADMIN postmaster@hostname
- SCRIPT_FILENAME /web/htdocs/hostname/home/aruba__php__test.php
- REMOTE_PORT 43924
- GATEWAY_INTERFACE CGI/1.1
- SERVER_PROTOCOL HTTP/1.1
- REQUEST_METHOD GET
- QUERY_STRING no value
- REQUEST_URI /aruba__php__test.php
- SCRIPT_NAME /aruba__php__test.php
- PHPRC no value
推荐答案
感谢 greenapps 的想法,这是最终的解决方案.
Thanks to greenapps idea, this is the final solution.
Android APP MainActivity:
public View onCreateView
....
WebView webView = (WebView) rootView.findViewById(R.id.my_webview);
String agentModified = webView.getSettings().getUserAgentString().concat(" MobileApplication(mypackage)");
webView.getSettings().setUserAgentString(agentModified);
网站:
if(strpos($_SERVER['HTTP_USER_AGENT'], 'com.vivicrema.android') !== false)
$isMobileApp = true;
它就像一个魅力!
这篇关于PHP中的Android WebView检测的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!