通过 UserAgent 判断是否在我们自己的安卓APP中

本文介绍如何通过在Android APP内的WebView设置特定UserAgent字符串来识别网页是否在自定义APP中打开,并提供了一个简单的示例代码及JS判断方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前 写过一篇 根据 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
}
在前端开发中,我们可以使用JavaScript来判断网页是在微信下还是在App下。具体的判断可以通过检测User Agent来实现。 User Agent是浏览器在向服务器发送请求时携带的一个标识,包含了关于浏览器、操作系统、设备等信息。微信和App的User Agent有一些差别,我们可以通过检测User Agent中的关键字来判断。 如果网页是在微信下打开,通常User Agent会包含类似于"WeChat"或"MicroMessenger"的关键字。我们可以使用JavaScript的`navigator.userAgent`获取当前浏览器的User Agent,并使用正则表达式进行匹配,判断是否包含这些微信特有的关键字。 如果网页是在App下打开,通常User Agent会包含特定的App标识,例如iOS的User Agent中可能包含"iPhone"或"iPad",Android的User Agent中可能包含"Android"等。我们可以使用正则表达式对User Agent进行匹配,判断是否包含这些特定的关键字。 下面是一个简单的示例代码: ```javascript // 获取当前浏览器的User Agent var userAgent = navigator.userAgent; // 判断是否在微信下 if (/MicroMessenger|WeChat/.test(userAgent)) { console.log("在微信下打开"); } // 判断是否App下 if (/iPhone|iPad/.test(userAgent)) { console.log("在iOS App下打开"); } else if (/Android/.test(userAgent)) { console.log("在Android App下打开"); } ``` 上述代码会打印出当前网页是在微信下还是在App下打开。你也可以根据实际情况进行相应的操作,例如显示不同的内容、调用不同的API等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值