Методы WebView не вызываются в android

Мой веб-просмотр не вызывает функцию javascript, она возвращает предупреждение, как показано ниже. Кто-нибудь может предложить, как избавиться от приведенного ниже предупреждения.

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.

Ниже моя функция.

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

Solutions Collecting From Web of "Методы WebView не вызываются в android"

Предупреждение сообщает вам все. Вы напрямую вызываете методы webview. Это означает, что вы вызываете их в WebViewCoreThread. Вы должны называть их в потоке пользовательского интерфейса, что означает в Activity, который использует этот веб-просмотр.

Подобно:

 WebView wv = (WebView)findViewById(id); wv.setJavaScriptEnabled(true); wv.setJavaScriptCanOpenWindowsAutomatically(true); wv.setPluginsEnabled(true); wv.loadUrl("javascript:android.selection.longTouch();"); 

Как предупреждает, вы вызываете методы webview в WebViewCoreThread . Таким образом, измените свой код так,

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

Используйте этот код Я думаю, он будет работать на вас, и изменил его в соответствии с вашими требованиями ##

  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 является участником веб-просмотра?

Кажется, вы не можете вызвать все методы WebView в потоке «WebViewCoreThread».

Вы можете использовать обработчик, отправить сообщение msg в обработчик onLongClick, а затем вызвать методы WebView в вашем обработчике.

Я думаю, что вы должны выполнить свой код метода onLongClick в runOnUIThread () или с помощью Handler, это предупреждение должно использовать все это в рабочем потоке.

Вы можете использовать WebView через Runnable. Нет необходимости использовать активность.

  webView.post(new Runnable() { @Override public void run() { getSettings().setJavaScriptEnabled(true); getSettings().setJavaScriptCanOpenWindowsAutomatically(true); getSettings().setPluginsEnabled(true); loadUrl("javascript:android.selection.longTouch();"); mScrolling = true; } });