0

我正在研究一个 webView,它可以工作,但 Flash 视频不起作用。

经过一番搜索,我找到了一个显示视频的 webview 代码。 网络视频

这是我的旧代码

private static final String LOG_TAG = "Web";

private WebView mWebView;
public static final String URL = "";

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.web);

    mWebView = (WebView) findViewById(R.id.webView);

    WebSettings webSettings = mWebView.getSettings();
    webSettings.setSavePassword(false);
    webSettings.setSaveFormData(false);
    webSettings.setJavaScriptEnabled(true);
    webSettings.setSupportZoom(false);



    String turl = getIntent().getStringExtra(URL);

    mWebView.loadUrl(turl);
;

}

@Override
public void onBackPressed() {

    finish();
}

/**
 * Provides a hook for calling "alert" from javascript. Useful for debugging
 * your javascript.
 */
final class MyWebChromeClient extends WebChromeClient {
    @Override
    public boolean onJsAlert(WebView view, String url, String message,
            JsResult result) {
        Log.d(LOG_TAG, message);
        result.confirm();
        return true;
    }
}

所以我用源代码中的 mainactivity 替换了它并添加了

    String turl = getIntent().getStringExtra(URL);

   public static final String URL = "";

并进行了一些更改,因此它加载了我使用的类名

所以现在我有了这个

   private WebView webView;
   public static final String URL = "";
   private FrameLayout customViewContainer;
   private WebChromeClient.CustomViewCallback customViewCallback;
   private View mCustomView;
   private myWebChromeClient mWebChromeClient;
   private myWebViewClient mWebViewClient;


   /**
    * Called when the activity is first created.
    */
   @Override
   public void onCreate(Bundle icicle) {
       super.onCreate(icicle);
       setContentView(R.layout.main);
       customViewContainer = (FrameLayout) findViewById(R.id.customViewContainer);
       webView = (WebView) findViewById(R.id.webView);

       mWebViewClient = new myWebViewClient();
       webView.setWebViewClient(mWebViewClient);


       mWebChromeClient = new myWebChromeClient();
       webView.setWebChromeClient(mWebChromeClient);
       webView.getSettings().setJavaScriptEnabled(true);
       webView.getSettings().setAppCacheEnabled(true);
       webView.getSettings().setBuiltInZoomControls(true);
       webView.getSettings().setSaveFormData(true);
       String turl = getIntent().getStringExtra(URL);
       webView.loadUrl(turl);
   }

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

   public void hideCustomView() {
       mWebChromeClient.onHideCustomView();
   }

   @Override
   protected void onPause() {
       super.onPause();    //To change body of overridden methods use File | Settings | File Templates.
       webView.onPause();
   }

   @Override
   protected void onResume() {
       super.onResume();    //To change body of overridden methods use File | Settings | File Templates.
       webView.onResume();
   }

   @Override
   protected void onStop() {
       super.onStop();    //To change body of overridden methods use File | Settings | File Templates.
       if (inCustomView()) {
           hideCustomView();
       }
   }

   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
       if (keyCode == KeyEvent.KEYCODE_BACK) {

           if (inCustomView()) {
               hideCustomView();
               return true;
           }

           if ((mCustomView == null) && webView.canGoBack()) {
               webView.goBack();
               return true;
           }
       }
       return super.onKeyDown(keyCode, event);
   }

   class myWebChromeClient extends WebChromeClient {
       private Bitmap mDefaultVideoPoster;
       private View mVideoProgressView;

       @Override
       public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) {
          onShowCustomView(view, callback);    //To change body of overridden methods use File | Settings | File Templates.
       }

       @Override
       public void onShowCustomView(View view,CustomViewCallback callback) {

           // if a view already exists then immediately terminate the new one
           if (mCustomView != null) {
               callback.onCustomViewHidden();
               return;
           }
           mCustomView = view;
           webView.setVisibility(View.GONE);
           customViewContainer.setVisibility(View.VISIBLE);
           customViewContainer.addView(view);
           customViewCallback = callback;
       }

       @Override
       public View getVideoLoadingProgressView() {

           if (mVideoProgressView == null) {
               LayoutInflater inflater = LayoutInflater.from(Web.this);
               mVideoProgressView = inflater.inflate(R.layout.video_progress, null);
           }
           return mVideoProgressView;
       }

       @Override
       public void onHideCustomView() {
           super.onHideCustomView();    //To change body of overridden methods use File | Settings | File Templates.
           if (mCustomView == null)
               return;

           webView.setVisibility(View.VISIBLE);
           customViewContainer.setVisibility(View.GONE);

           // Hide the custom view.
           mCustomView.setVisibility(View.GONE);

           // Remove the custom view from its container.
           customViewContainer.removeView(mCustomView);
           customViewCallback.onCustomViewHidden();

           mCustomView = null;
       }
   }

   class myWebViewClient extends WebViewClient {
       @Override
       public boolean shouldOverrideUrlLoading(WebView view, String url) {
           return super.shouldOverrideUrlLoading(view, url);    //To change body of overridden methods use File | Settings | File Templates.
       }
   }

我将此代码用于我的按钮以在 webview 中打开 url

public void onClick(View v) {
    switch (v.getId()) {
    case R.id.button1:
        Intent k = new Intent(this, Web.class);
        k.putExtra(com.papers.test.Web.URL,
                "http://www.telegraaf.mobi");
        startActivity(k);
        break;


    }

}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.onlinekranten);
    View secondButton = findViewById(R.id.button1);
    secondButton.setOnClickListener(this);

}

在我的旧 web.class 中,这工作得很好,但是现在当我按下按钮时,我得到了一个 fc,有人可以帮我解决这个问题吗?

日志猫

06-07 12:38:55.310: E/AndroidRuntime(3236): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.papers.test/com.papers.test.Web}: java.lang.NullPointerException
4

1 回答 1

-1

它看起来像你的按钮需要声明我喜欢在 onCreate 上面做它以在任何地方使用它

按钮第二个按钮;

于 2013-06-07T10:59:48.413 回答