1

最初に私が持っているものを説明し、次に私がやりたいことを説明します。私はたくさん検索してきましたが、この質問はすでに存在していると思うかもしれませんが、非常に特殊なケースだと思います.

私は、php、jQuery、javascript などのテンプレート システムを使用する Web アプリケーションを持っています。現在、モバイル デバイス用の特定のテンプレートを使用して、モバイル Webバージョンを開発しています。それは正常に動作しますが、問題は、 WebView内のAndroid ネイティブ アプリにモバイル Web を含めたい場合に発生します。

独自の Android 関数を呼び出すスクリプトを使用するために、javascriptとそれを機能させるために必要なすべてを有効にしました。そして、それはうまくいきます!

問題は、アプリの外部から任意のブラウザーからアクセスすると、モバイル Web と Android がデバイスを検出することですが、次のように Android ネイティブ アプリの関数を呼び出すと、関数が定義されていないと表示されます。

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

問題は、Web ブラウザーを使用しているか、ネイティブ アプリを使用しているかをどのように検出できるかということです。または、そうでなければ、どうすればそのエラーでウェブモバイルがダウンするのを避けることができますか?

よろしくお願いします!!そして、あなたの助けにthx!

4

2 に答える 2

3

Webページにアクセスしようとしている を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 に答える