Métodos WebView no se llama en android
Mi vista Web no está llamando a la función javascript que está devolviendo advertencia como a continuación. ¿Puede alguien sugerir cómo deshacerse de la advertencia de abajo.
07-30 10:15:44.031: W/webview_proxy(3770): java.lang.Throwable: Warning: A WebView method was called on thread 'WebViewCoreThread'. All WebView methods must be called on the UI thread. Future versions of WebView may not support use on other threads.
- El parámetro de método debe ser obj de cierta clase que implemente determinada interfaz
- "Servicios del sistema no disponibles para Actividades antes de onCreate ()" ¿Mensaje de error?
- Android 6 Permisos => Crash al deshabilitar permiso y volver a la aplicación
- La mejor manera de almacenar SparseBooleanArray en Bundle?
- Android: ¿Cómo puedo pasar parámetros a OnPreExecute () de AsyncTask?
A continuación está mi función.
public boolean onLongClick(View v){ System.out.println("dfdsf"); // Tell the javascript to handle this if not in selection mode //if(!this.isInSelectionMode()){ this.getSettings().setJavaScriptEnabled(true); this.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); this.getSettings().setPluginsEnabled(true); this.loadUrl("javascript:android.selection.longTouch();"); mScrolling = true; //this.setJavaScriptEnabled(true); //} // Don't let the webview handle it return true; }
- JNI / Android: llamada a un método no estático en Java desde C ++?
- ¿Qué es un evento de presionar las mejillas?
- Android ViewPager setCurrentItem no funciona después de onResume
- Método recursivo funciona en java con consola, pero no con android
- Llame a un método de actividad de un BroadcastReceiver. ¿Es posible?
- Cómo reemplazar el método a través del atajo de teclado en Android Studio
- Cómo invocar el método de una clase CCColorLayer de otro método de clase (se extiende Actividad), Android?
- Problemas con el teclado Android popupCharacters
La advertencia te lo dice todo. Estás llamando directamente a los métodos de webview. Eso significa que usted los está llamando en WebViewCoreThread. Tienes que llamarlos al hilo de interfaz de usuario que significa en la actividad que utiliza esta vista web.
Me gusta:
WebView wv = (WebView)findViewById(id); wv.setJavaScriptEnabled(true); wv.setJavaScriptCanOpenWindowsAutomatically(true); wv.setPluginsEnabled(true); wv.loadUrl("javascript:android.selection.longTouch();");
Dado que la advertencia indica que está llamando a los métodos de webview en WebViewCoreThread
. Por lo tanto, modificar su código como este,
public boolean onLongClick(View v){ YourActivity.this.runOnUiThread(new Runnable() { public void run() { this.getSettings().setJavaScriptEnabled(true); this.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); this.getSettings().setPluginsEnabled(true); this.loadUrl("javascript:android.selection.longTouch();"); mScrolling = true; } }); }
Utilice este código pienso que trabajará para usted, y lo modificó según su necesidad ##
private WebView webView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.web); webView = (WebView) findViewById(R.id.web_view); webView.setInitialScale(1); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); webView.setScrollbarFadingEnabled(false); webView.loadUrl("http://www.youtube.com"); } }
OnLongClick es miembro de la webview?
Parece que no puedes llamar a todos los métodos de WebView en el hilo 'WebViewCoreThread'.
Puede utilizar el controlador, enviar msg al manejador en onLongClick y, a continuación, llamar a métodos WebView en su manejador.
Creo que debe ejecutar su código de onLongClick método en runOnUIThread () o utilizando el controlador, esta advertencia se debe a utilizar todo esto en un hilo de trabajo.
Puede utilizar WebView a través de Runnable. No hay necesidad de usar la actividad.
webView.post(new Runnable() { @Override public void run() { getSettings().setJavaScriptEnabled(true); getSettings().setJavaScriptCanOpenWindowsAutomatically(true); getSettings().setPluginsEnabled(true); loadUrl("javascript:android.selection.longTouch();"); mScrolling = true; } });
- ¿Qué evento se activa cuando se selecciona un fragmento de ficha?
- ListView in Scroll Ver mi vista de desplazamiento se mueve a la parte superior de listview. ¿Cómo puedo evitar esto?