在Android浏览器或WebView中检测

JoJ*_*oJo 36 javascript android

Javascript如何检测网站是在Android的股票浏览器中加载还是加载到另一个应用程序的WebView中?我想在这两种情况下运行略有不同的代码.

JoJ*_*oJo 55

活动 - > onCreate

this.webView.getSettings().setUserAgentString(
    this.webView.getSettings().getUserAgentString() 
    + " "
    + getString(R.string.user_agent_suffix)
);
Run Code Online (Sandbox Code Playgroud)

Res - > Values - > strings.xml

<string name="user_agent_suffix">AppName/1.0</string>
Run Code Online (Sandbox Code Playgroud)

使用Javascript

function() isNativeApp {
    return /AppName\/[0-9\.]+$/.test(navigator.userAgent);
}
Run Code Online (Sandbox Code Playgroud)

  • 这是来自http://developer.android.com/guide/webapps/webview.html#EnablingJavaScript的官方推荐方式 (4认同)
  • 这仅当您也是 Android 应用程序开发人员时才可行,但如果您无法更改将在其中运行页面的应用程序源代码,则此方法将不起作用。当然,除非您联系应用程序开发人员并且他们同意为您更改 Android 代码。 (2认同)

Sea*_*ean 5

您可以检查正在请求的页面上的服务器变量,以查看它是否来自您的应用程序并相应地设置javascript变量

if($_SERVER['HTTP_X_REQUESTED_WITH'] == "com.company.app")
    echo 'var isAndroidApp=true;';
else
    echo 'var isAndroidApp=false;';
Run Code Online (Sandbox Code Playgroud)
  • 用您的包名替换com.company.app