如何在Android Webview中停止背景音乐播放

3
当我在Android的Webview中播放视频时,它可以完美地播放。但是当我按下返回按钮或主页键时,它并不会停止声音。它会在后台继续播放。
只有在我从最近应用程序中删除我的应用程序时,这个声音才会停止,否则它会在后台继续播放。
我尝试了下面链接中提供的所有解决方案,但没有一个适用于我。 http://devsolvd.com/questions/how-to-stop-youtube-video-playing-in-android-webview 这个问题在Android 4.1中不会发生,在Android 4.4.2(Kitkat)中,Webview会在后台播放声音。
我的代码是:
@Override
    protected void onResume()
    {
        // TODO Auto-generated method stub
        super.onResume();   

        if (onResumeCall)
        {
            webView.onResume();
            setContentsData();

            if (contentHolders.size() > 0)
                selectItem(currentIndex, 0, FIRST_PAGE);
        }



        onResumeCall = true;
        //webView.onResume();
        Log.i("OnREsume", "OnREsume");


    }

@Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        }

@Override
    public void onBackPressed()    //when back pressed then
    {
        // TODO Auto-generated method stub


        super.onBackPressed();
    }

我尝试了许多方法,但都没有起作用。请帮帮我。


这是一个YouTube视频吗? - SuperFrog
https://dev59.com/Sm025IYBdhLWcg3wi2mw - Sunny
你能展示一些代码吗? - Anand Singh
这不是YouTube视频。 - user5367527
@Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); webView.onPause(); } - user5367527
5个回答

2
    @Override
     public void onPause() {
       super.onPause();
       mWebView.onPause();
     }

1
你可以使用这个。
@Override  
protected void onPause() {  
    m_WebView.reload();  

    super.onPause();  
}  

0

我认为您需要重写返回按钮(onBackPressed)

public void onBackPressed() {
   mWebView.onPause();
   super.onPause();
}

0
你可以试试这个,这是我在4.4.2上用于类似问题的代码:
@Override
    public void onBackPressed() 
    {
        webView.clearView();
        webView.freeMemory();
        webView.removeAllViews();
        webView.destroy();

    try {
          Class.forName("android.webkit.WebView")
                        .getMethod("onPause", (Class[]) null)
                        .invoke(webView, (Object[]) null);
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO: handle exception
        }
        super.onBackPressed();
    }

这里的internalBrowser是什么? - user5367527
尝试一下不使用removeView部分。 - SuperFrog
不明白您上次的评论。 - SuperFrog
webView.clearView(); webView.freeMemory(); 这个方法已经被弃用了。 - user5367527

0

我曾经遇到过同样的问题,我通过JavaScript解决了这个问题,具体做法如下:

@Override
public void onPause(){
    super.onPause();
    webView.loadUrl("javascript:pauseSound()");
}

@Override
public void onResume(){
   super.onResume();
   webView.loadUrl("javascript:playSound()");
   webView.onResume();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接