本文主要是介绍通过 UserAgent 判断是否在我们自己的安卓APP中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
之前 写过一篇 根据 UserAgent 判断网页是在浏览器、或在微信、或在APP中 (http://www.miaoqiyuan.cn/p/useragent-in-where),那篇文章能通过 UserAgent 判断出 是否在微信、浏览器或者其他APP中,如果需要判断是否在我们自己开发的APP中,就无能为力了。
WebView 提供了 setUserAgentString,可以任意修改 UserAgent。我们只需要在 UserAgent 中增加 自定义的 字符串,就可以在网页中通过JS判断是否在我们自己的APP内。
MainActivity.java 的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | package cn.miaoqiyuan.MyApp; import android.net.http.SslError; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.webkit.SslErrorHandler; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); WebView webView = (WebView) findViewById(R.id.webView); //修改User-Agent,比如 MyApp,版本号2.0 WebSettings webConf = webView.getSettings(); webConf.setUserAgentString(webConf.getUserAgentString() + " MyApp/2.0<Android>" ); //不使用浏览器打开 webView.setWebViewClient( new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器 view.loadUrl(url); return true ; } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { //出现错误页,显示报错 String data = "<br /><br /><br /><br /><br /><center>无法连接服务器</center>" ; view.loadUrl( "javascript:document.body.innerHTML=\"" + data + "\"" ); } @Override public void onPageFinished(WebView view, String url) { //页面加载完毕 super .onPageFinished(view, url); } }); //支持JavaScript webView.getSettings().setJavaScriptEnabled( true ); //加载网页APP地址,只要界面做的像APP就可以了 webView.loadUrl( "http://m.abc.com/" ); } } |
判断也很简单,JS或者服务器端脚本都可以进行判断:
1 2 3 4 5 6 7 8 | var inMyApp = /MyApp\/(\d\.\d)/.exec(navigator.userAgent) if ( inMyApp ){ console.log( "Yes, Version:" + inMyApp[1]); //不在APP内 //Yes, Version:2.0 } else { console.log( "No" ); //不在APP内 //No } |
这篇关于通过 UserAgent 判断是否在我们自己的安卓APP中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!