2014-03-28 2 views
0

수 있었다.웹보기 내가이 페이지에 대한 안드로이드에서 자바 스크립트 작업을하기 위해 노력하고있어

webView1.setWebChromeClient(mClient); 

webView1.setDownloadListener(new DownloadListener() { 

     @Override 
     public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { 
      Uri uri = Uri.parse(url); 
      Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
      startActivity(intent); 
     } 
    }); 

webView1.addJavascriptInterface(new JavaScriptInterfaceForTitle(this, mPasswordStrength, webView1), "HtmlViewer"); 

webView1.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      String cookie = CookieManager.getInstance().getCookie(url); 
      if (url.equals(getContentUrl() + "addcomment")) { 
       webView1.stopLoading(); 
       Intent addcommentIntent = new Intent(mContext, AddCommentActivity.class); 
       addcommentIntent.putExtra("url", previousUrl); 
       startActivity(addcommentIntent); 
      } else { 
       previousUrl = url; 
       ((BaseActivity) mContext).showLoadingDialog(); 
       if (!urlStackList.contains(url)) { 
        urlStackList.add(url); 
       } 
       super.onPageStarted(view, url, favicon); 
      } 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      ((BaseActivity) mContext).hideLoadingDialog(); 
      if (url.contains("content/shows/") || url.contains("content/tips/")) { 
       counter = 0; 
       view.loadUrl("javascript:window.HtmlViewer.showHTML(document.getElementById('" + mContext.getString(R.string.title_name) + "').innerHTML);"); 
       view.loadUrl("javascript:window.HtmlViewer.showHTML(document.getElementById('name_en').innerHTML);"); 
       view.loadUrl("javascript:window.HtmlViewer.showHTML(document.getElementById('name_zh').innerHTML);"); 
      } else { 
       mStateBar.setShowTitle(mContext.getString(R.string.tv_drama)); 
      } 
      super.onPageFinished(view, url); 
     } 

    }); 
webview1.setWebChromeClient(mClient); 
webView1.getSettings().setJavaScriptEnabled(true); 
webView1.getSettings().setPluginState(PluginState.ON); 
webView1.getSettings().setPluginsEnabled(true); 
webView1.getSettings().setAppCacheMaxSize(httpCacheSize); 
webView1.getSettings().setSupportZoom(false); 
webView1.getSettings().setBuiltInZoomControls(false); 
webView1.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 

내가 안드로이드 웹보기에이 작품을 만들기 위해 몇 가지 매개 변수를 놓치고 :

이 매개 변수는 웹보기 위해 설정되어 있습니까? 크롬 브라우저를 확인해도 아무런 문제없이 작동하므로 뭔가를 놓치고 무엇을 찾을 수 없는지 확신합니다.

편집 :

class MyChromeClient extends WebChromeClient { 

    @Override 
    public void onShowCustomView(View view, CustomViewCallback callback) { 
     mCustomViewCallback = callback; 
     mTargetView.addView(view); 
     mCustomView = view; 
     mContentView.setVisibility(View.GONE); 
     mTargetView.setVisibility(View.VISIBLE); 
     mTargetView.bringToFront(); 
    } 

    @Override 
    public void onHideCustomView() { 
     if (mCustomView == null) 
      return; 

     mCustomView.setVisibility(View.GONE); 
     mTargetView.removeView(mCustomView); 
     mCustomView = null; 
     mTargetView.setVisibility(View.GONE); 
     mCustomViewCallback.onCustomViewHidden(); 
     mContentView.setVisibility(View.VISIBLE); 
    } 

    // For Android 3.0+ 
    public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) { 
     mUploadMessage = uploadMsg; 
     Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
     i.addCategory(Intent.CATEGORY_OPENABLE); 
     i.setType("image/*"); 
     TvDramaActivity.this.startActivityForResult(Intent.createChooser(i, "Chooser"), 100); 
    } 

    // For Android < 3.0 
    public void openFileChooser(ValueCallback<Uri> uploadMsg) { 
     openFileChooser(uploadMsg, ""); 
    } 

    // For Android > 4.1 
    public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { 
     openFileChooser(uploadMsg, ""); 
    } 

    @Override 
    public void onProgressChanged(WebView view, int newProgress) { 
    } 
} 

public boolean inCustomView() { 
    return (mCustomView != null); 
} 

public void hideCustomView() { 
    mClient.onHideCustomView(); 
} 
+1

LogCat에 오류나 경고가 있습니까? – peshkira

+0

webview1.setWebChromeClient (new WebChromeClient())를 추가하십시오. –

+0

오류 또는 경고 없음 – Tazz

답변

1

이 나를 위해 작동합니다

당신의 웹보기 활동 클래스에서

:

WebView webView1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    webView1 = (WebView) findViewById(R.id.web); 

    webView1.setWebChromeClient(new WebChromeClient()); 
    webView1.getSettings().setJavaScriptEnabled(true); 
    webView1.getSettings().setPluginState(PluginState.ON); 

    webView1.getSettings().setSupportZoom(false); 
    webView1.getSettings().setBuiltInZoomControls(false); 
    webView1.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 

    webView1.loadUrl("http://test.swiss-impulse.com/scratch_card_game/index.html"); 
    } 

귀하의 레이아웃 파일 :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/container" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<WebView 
    android:id="@+id/web" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"/> 

</LinearLayout> 

<uses-permission android:name="android.permission.INTERNET"/>을 매니페스트 파일에 추가하는 것을 잊지 마십시오.

희망이 있습니다. 감사합니다.

+0

페이지에 흠집이 있습니까? 파란색 영역을 긁으면 그림이 그려지나요? – Tazz

+0

예 .. 테스트를 거쳤으며 실제로 잘 작동합니다. –

+0

끝에서 이것을 확인할 수도 있습니다. –

관련 문제