Android Webview加载网页视频播放遇到的坑

Android webview中的坑我想不用我说大家应该都感受到了,各种问题,先有一个需求需要加载html格式的网络视频。于是上github找遍了各种开源播放器。均不能播放html格式的视频,但是我看手机浏览器就可以打开,于是我就搜android浏览器。结果还真让我找到了一个开源的项目。
https://gitee.com/xumingwang/youkes_browser
感谢作者的无私奉献精神,不然我都不知道要做到什么时候。
这个是一个开源的浏览器的项目,里面功能比较全,不过ui的话就比较low了。不过我只需要看他的播放功能,还是很强大的。说了这么多,不上张图总以为在吹牛逼。
Android Webview加载网页视频播放遇到的坑_第1张图片

不会上传视频,这样将就把。
于是欢欢喜喜的应用到项目中,以为可以下班打撸了。没想到卡的一b。完全没法用。这是为什么呢,明明demo跑得好好的。这就让我很不爽了。 直接单独开一个进程 去使用webview 并且当这个 进程结束时,请手动调用System.exit(0)。

在xml文件中配置

 android:process=":remote"

滴滴,打卡下班。

正准备走的时候居然又遇到一个蛋疼的问题。网页重定向退不出来了。好吧,继续解决。
我的思路是通过一个标示记录第一次登陆的网页,然后在返回的时候判断是不是第一次记录的,如果不是就goBack。

 private String isFistUrl;//第一次加载url
 private boolean isFirst = false;
  mWebView.setWebViewClient(new WebViewClient() {
              //监听到第一次进去的地址
            @Override
            public boolean shouldOverrideUrlLoading(final WebView view, String url) {
                flag = view.getUrl();
                if (!isFirst) {
                    isFistUrl = url;
                    isFirst = true;
                }
                LogUtils.d("shouldOverrideUrlLoading=====", url);
                view.loadUrl(url);
                return true;
            }
            //所有资源加载都会走的方法
            @Override
            public void onLoadResource(final WebView view, String url) {
                super.onLoadResource(view, url);
                LogUtils.d("flag=====", flag);

            }

            //退出时的时间
            private long mExitTime;

            public void onPageStarted(final WebView view, String url, Bitmap favicon) {
            }
            @Override
            public void onPageFinished(WebView view, String url) {

            }
        });
    }


    // 设置回退
    @Override
    public void onBackPressed() {
        if (mWebView.canGoBack() && !isFistUrl.equals(mWebView.getUrl())) {
            mWebView.goBack();
        } else {
            finish();
        }
    }

解决视频播放退出还在播放的问题

 @Override
    public void onResume() {
        System.out.println("webView onResume");
        flag = "";
        try {
            if (mWebView != null) {
                mWebView.getClass().getMethod("onResume").invoke(mWebView, (Object[]) null);
                mWebView.onResume();
//                mWebView.resumeTimers();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        super.onResume();
    }

    @Override
    public void onPause() {
        System.out.println("webView onPause");
        try {
            if (mWebView != null) {
                mWebView.getClass().getMethod("onPause").invoke(mWebView, (Object[]) null);
                mWebView.onPause();
//                mWebView.pauseTimers();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        super.onPause();
    }

还有一些坑请慢慢来爬。
http://blog.csdn.net/u013598111/article/details/50564705

人生苦短,及时行乐,祝大家国庆节快乐!

你可能感兴趣的:(app基础)