1

首先我会解释我有什么,然后我想做什么。我一直在寻找很多,你可以认为这个问题已经存在,但我认为是一个非常具体的案例。

我有一个 web 应用程序,使用带有 php、jQuery、javascript 等的模板系统......现在我正在做的是开发一个移动 web版本,带有用于移动设备的特定模板。它工作正常,但是当我想将移动 web 包含在android native app中的WebView中时,问题就来了。

我已经启用了javascript以及使它工作所需的一切,以便使用脚本来调用我自己的 Android 函数。而且效果很好!

问题是,当我从应用程序外部的任何浏览器访问时,移动网络和 Android 会检测到该设备,但它说当我像这样调用函数 android 本机应用程序时未定义函数:

   <script>Android.showToast("Welcome");</script>

所以问题是,我如何检测我使用的是网络浏览器还是本机应用程序?否则,我怎样才能避免网络手机因该错误而停机?

问候!感谢您的帮助!

4

2 回答 2

3

通过PHP您可以检查user-agent正在尝试访问您的网页的那个。您可以使用其中之一进行测试。

if( $_SERVER['HTTP_X_REQUESTED_WITH'] == 'your_android_app_package_name' ) {
   //...Inject your javascript code

}

if( strpos($_SERVER['HTTP_USER_AGENT'], 'your_android_app_package_name/') !== false ){
   //...Inject your  javascript code.

}

于 2013-10-16T13:53:46.480 回答
0

当我在 javascript 中使用具有环境依赖关系的组件时,这种情况经常发生在我身上。我通常这样做的方式是用本地对象和空函数覆盖全局对象。在您的情况下,您可以尝试在所有其他脚本标签之前添加类似这样的内容:

window.Android = window.Android || {
    "showToast": function(){}
}
于 2013-10-16T14:05:13.887 回答