您完全可以做到这一点,并且在 developer.android.com 上也建议这样做,当他们谈论 WebView 时,特别是如果您想为您的 Web 视图构建一个 Web 应用程序。参考这里:http: //developer.android.com/guide/webapps/webview.html
我建议不仅要在您的用户代理中保留对应用程序的引用,还要跟踪版本。
无论如何,我也想改变我的 UA,这里的讨论和鼓励我也这样做。
这是我的实现:
在您的安卓应用程序上:
String versionName="";
int versionCode=0;
try {
versionName = getBaseContext().getPackageManager().getPackageInfo(getBaseContext().getPackageName(), 0 ).versionName;
versionCode = getBaseContext().getPackageManager().getPackageInfo(getBaseContext().getPackageName(), 0 ).versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
如果您想自动增加内部版本号。versionCode,您也可以查看其他Stack Overflow帖子,即 C# 解决方案。
之后,您只需更改用户代理。
WebView mywebview = (WebView)findViewById(R.id.webView);
String myUserAgent = " MyFancyAPPName V."+versionName+"."+versionCode;
mywebview.getSettings().setUserAgentString(mywebview.getSettings().getUserAgentString()+myUserAgent);
在您的 Web 应用程序中:在 PHP 中
<?php
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
if(stripos($ua,'MyFancyAPPName') !== false){
//do whatever you wish here
}
?>
或者在 JavaScript 中
var ua = navigator.userAgent.toLowerCase();
var isAndroid = ua.indexOf("MyFancyAPPName") > -1;
if(isAndroid) {
//do whatever you wish here
}
或者您可以直接从.htaccess文件中检测它:
RewriteCond %{HTTP_USER_AGENT} ^.*MyFancyAPPName.*$
RewriteRule ^(.*)$ http://www.MyWebSite/MyFancyAPPName [R=301]