欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-23 14:19:23
...

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

不会上传视频,这样将就把。
于是欢欢喜喜的应用到项目中,以为可以下班打撸了。没想到卡的一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

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

相关标签: android