当我按下后退按钮时,youtube音频总是在Android webview中播放

时间:2016-05-09 18:20:44

标签: android audio webview youtube

我在WebView中有Fragment个视频。当我按下后退按钮时,youtube音频继续播放:

View view = inflater.inflate( R.layout.fragment, container, false );
configView( view );


view.setFocusableInTouchMode(true);
view.requestFocus();
view.setOnKeyListener( new View.OnKeyListener()
{
    @Override
    public boolean onKey( View v, int keyCode, KeyEvent event )
    {
        if( keyCode == KeyEvent.KEYCODE_BACK )
        {
            if ( null != webView )
            {
                webView.loadUrl("about:blank");
            }
        }
        return false;
    }
} );

另一方面,当我将应用放在后台时,onPause()事件正常工作:

@Override
public void onPause()
{
    super.onPause();
    if ( null != webView )
    {
        webView.loadUrl( "about:blank" );
    }
}

按下按钮时,为什么它不起作用?任何解决方案?

2 个答案:

答案 0 :(得分:2)

播放Youtube视频时,后退按钮事件属于webview。该片段未处理此事件。 解决方案是:

webView.setOnKeyListener( new View.OnKeyListener()
    {
        @Override
        public boolean onKey( View v, int keyCode, KeyEvent event )
        {
            if ( keyCode == KeyEvent.KEYCODE_BACK )
            {
                if ( null != webView )
                {
                    webView.stopLoading();
                    webView.destroy();
                }
            }
            return false;
        }
    } );

答案 1 :(得分:0)

更通用的方法:

@Override
protected void onResume() {
    super.onResume();
    try {
        WebView.class.getMethod("onResume").invoke(wvBorwser);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
protected void onPause() {
    super.onPause();
    try {
        WebView.class.getMethod("onPause").invoke(wvBorwser);
    } catch (Exception e) {
        e.printStackTrace();
    }
}