0

WebView を読み込んでソース コードを取得し、アラート ダイアログに入力します。アラート ダイアログが閉じられた後、次のスレッドが表示されます。

Uncaught handler: thread WebViewCoreThread exiting due to uncaught exception
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRoot.checkThread(ViewRoot.java:2683)
at android.view.ViewRoot.requestLayout(ViewRoot.java:557)
at android.view.View.requestLayout(View.java:7918)
at android.view.View.requestLayout(View.java:7918)
at android.view.View.requestLayout(View.java:7918)
at android.view.View.requestLayout(View.java:7918)
at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:255)
at android.view.View.requestLayout(View.java:7918)
at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:255)
at android.view.View.setFlags(View.java:4324)
at android.view.View.setVisibility(View.java:2988)
at card.eximbank.CardExim.function(CardExim.java:413)
at card.eximbank.CardExim$MyJavaScriptInterface.getHTML(CardExim.java:74)
at android.webkit.BrowserFrame.stringByEvaluatingJavaScriptFromString(Native Method)
at android.webkit.BrowserFrame.stringByEvaluatingJavaScriptFromString(Native Method)
at android.webkit.BrowserFrame.loadUrl(BrowserFrame.java:149)
at android.webkit.WebViewCore.loadUrl(WebViewCore.java:1449)
at android.webkit.WebViewCore.access$1400(WebViewCore.java:48)
at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:890)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:611)
at java.lang.Thread.run(Thread.java:1096)

これは私の WebView です:

browser.getSettings().setJavaScriptEnabled(true);
browser.getSettings().setSavePassword(false);
browser.getCertificate();
browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

final Activity MyActivity = this;
browser.setWebChromeClient(new WebChromeClient() {

 public void onProgressChanged(WebView view, int progress) {
 setProgressBarIndeterminateVisibility(true);
 MyActivity.setProgress(progress * 100); // Make the bar
 if (progress == 100) {
  setProgressBarIndeterminateVisibility(false);
 }
}
@TargetApi(8)
public boolean onConsoleMessage(ConsoleMessage cmsg)
{
 resultCont = cmsg.message();
 function();
 return true;
}
});

browser.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String    failingUrl)
{ }

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
 return true;
}

public void onPageFinished(WebView view, String url)
{   
 if(countOnLoad == 2){
  if (android.os.Build.VERSION.SDK_INT > 7) {    
   view.loadUrl("javascript:console.log(document.getElementsByTagName('body') [0].innerHTML);");    
  }else{
   view.loadUrl("javascript:window.HTMLOUT.getHTML(document.getElementsByTagName('body')[0].innerHTML);");
  }
   countOnLoad = 1;
  }else{
   countOnLoad++;
   }
 } 

 @TargetApi(8)
 public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {

  handler.proceed();
 }
 });

メイン アクティビティのボタン:

signIn.setOnClickListener(new OnClickListener(){
public void onClick(View arg0) {
 browser.loadUrl("file:///android_asset/test_exim.html?username=" + username + "&password=" + password);
 }
});

ボタンをクリックすると、ローカル ファイルが WebView に読み込まれます。このファイルは、フォームを送信し、他の URL を WebView に読み込みます。WebView からソースコードを取得し、TextView に配置したいと考えています。ただし、WebView は表示されません。

4

0 に答える 0