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.

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; } 

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; } }); 
  • Llamar un método de actividad de BroadcastReceiver en Android
  • Java: Debería usar constructor para hacer algo más que la inicialización de las variables
  • No se puede reemplazar el método onPostExecute () en AsyncTask Class o obtenerlo para activar
  • ¿Qué es la lógica detrás de super.method o después de super.method en android?
  • Error de "no incluir instancia de tipo" al llamar al método de otra clase en Android
  • Java argumento de longitud variable múltiple
  • ¿Por qué no AsyncTasks siempre funcionan dentro de un onClickListener?
  • ¿Cómo puedo pasar una función como un parámetro a otra función en android?
  • Mapeo entre los permisos de Android (que definimos en el archivo manisfest) a las llamadas / métodos de API correspondientes
  • ¿Restablecer SharedPreferences?
  • ¿Cómo retraso un método en un bucle for en java?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.