2011-07-21 39 views
34

¿Cómo puede detectar Javascript si un sitio web se carga en el navegador de valores de Android o se carga en un WebView de otra aplicación? Me gustaría ejecutar un código ligeramente diferente en estos dos casos.Detectar dentro del navegador Android o WebView

+0

Compruebe si el agente de usuario de la vista web es diferente del navegador de stock de Android. Puede verificarlo con bastante facilidad yendo a este sitio. http://whatsmyuseragent.com/ Sin embargo, estoy bastante seguro de que el agente de usuario será exactamente el mismo, en cuyo caso no tengo ni idea. – Caimen

+0

A menos que sea el creador de la WebView en cuestión. En cuyo caso, creo que puede poner lo que desee para el agente de usuario – FoamyGuy

+2

Si está a cargo de la aplicación, ¿es posible que pueda enviar un agente de usuario específico cuando carga la página y luego usar la sugerencia de Caimen anterior? Utilizando la función [WebView's setUserAgentString] (http://developer.android.com/reference/android/webkit/WebSettings.html#setUserAgentString (java.lang.String)), puede establecer un agente de usuario específico, y luego el usuario javascript para detectar la diferencia – mopsled

Respuesta

50

actividad -> alcrear

this.webView.getSettings().setUserAgentString(
    this.webView.getSettings().getUserAgentString() 
    + " " 
    + getString(R.string.user_agent_suffix) 
); 

Res -> -> Valores strings.xml

<string name="user_agent_suffix">AppName/1.0</string> 

Javascript

function() isNativeApp { 
    return /AppName\/[0-9\.]+$/.test(navigator.userAgent); 
} 
+4

Esa es la forma oficial recomendada de http://developer.android.com/guide/webapps/webview.html#EnablingJavaScript –

+0

@MarvinEmilBrach que no funciona si está utilizando la autenticación de redes sociales en la vista web. Perderá la interfaz de Javascript – user516883

+1

Esto solo es viable cuando también eres el desarrollador de la aplicación de Android, pero no funcionará si no puedes cambiar el código fuente de la aplicación en la que se ejecutará la página. A menos que, por supuesto, si se contacta con los desarrolladores de la aplicación y aceptan realizar los cambios en el código de Android para usted. –

5

Puede comprobar las variables del servidor de la página que se está solicitando para ver si está viniendo de su aplicación y establecer una variable de JavaScript consecuencia

if($_SERVER['HTTP_X_REQUESTED_WITH'] == "com.company.app") 
    echo 'var isAndroidApp=true;'; 
else 
    echo 'var isAndroidApp=false;'; 
  • reemplazar com.company.app con su nombre de paquete
Cuestiones relacionadas